0

我正在尝试创建一个 iOS 应用程序,其中我必须有一个 UITableView ,每次我按下一个新的输入按钮时,当我按下该按钮时,都会出现一个新单元格。我的问题是,每次我按下按钮时,不仅创建的单元格显示当前时间,而且它上面的单元格显示不同的时间,重新加载并显示当前时间。为了更好地解释它,如果我在 8:05、9:01 和 9:10 按下按钮,我希望 UITableView 显示:

-8:05
-9:01
-9:10

相反,它显示:

-9:10
-9:10
-9:10.

我该怎么办??谢谢

这是我的代码( newEntry 是按钮,brain 是一个对象,我有方法获取当前时间)

@implementation MarcaPontoViewController{

    NSMutableArray *_entryArray;
@synthesize brain=_brain;

- (void)viewDidLoad
{
    [super viewDidLoad];
    _brain = [[Brain alloc] init];
    _entryArray = [[NSMutableArray alloc] init];

    //[self updateTime];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
    }

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [_entryArray count];
}

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier= @"myCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = [_entryArray lastObject];
           }

    return cell;
}


- (IBAction)newEntry:(id)sender {


    [_entryArray addObject:[self.brain currentTime]];


    [_timeTable reloadData];

}

@end
4

3 回答 3

0

您的问题在这一行:

 cell.textLabel.text = [_entryArray lastObject];

您需要使用:

cell.textLabel.text = [_entryArray objectAtIndex:indexPath.row];

或者,

cell.textLabel.text = _entryArray[indexPath.row];
于 2013-03-17T02:21:48.830 回答
0

该行cell.textLabel.text = [_entryArray lastObject]只会返回数组中的最后一个对象,这就是为什么您会看到相同的时间重复。将其更改为:

// in cellForRowAtIndexPath:
cell.textLabel.text = [_entryArray objectAtIndex:indexPath.row];

这应该可以解决根本问题。

于 2013-03-17T02:40:17.253 回答
0

[_entryArray lastObject] 总是给出最后返回的对象。

采用

cell.textLabel.text = [_entryArray objectAtIndex: indexPath.row];
于 2013-03-17T02:42:08.780 回答