我的UITableView有重复的行

时间:2010-06-08 02:37:22

标签: iphone objective-c uitableview

我不知道为什么,但我的UITableView,它不是什么花哨的,当它不应该显示重复的行。

似乎用户滚动时添加的行(即,以屏幕开头的行开头)正在获取错误行索引的数据。它几乎就像新单元格被排队时一样,它使用了一个“被”使用的单元格,但没有正确清理。

您是否需要“清理”排队的单元格,以便新单元格不使用已创建的单元格?

我的代码如下:

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

    MyDayCell *cell = (MyDayCell *)[tableView 
                                      dequeueReusableCellWithIdentifier: CustomCellIdentifier];

    if (cell == nil) { 
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyDayCell" owner:self options:nil];

        for (id oneObject in nib) 
            if ([oneObject isKindOfClass:[MyDayCell class]])
                cell = (MyDayCell *)oneObject;

    } 

    NSUInteger section = [indexPath section];
    NSUInteger row = [indexPath row]; 
    NSArray *thisSectionItems = (NSArray*)[self.listData objectForKey: [[NSNumber alloc] initWithInt:section]];
    MyDayDetails *rowData = [thisSectionItems objectAtIndex:row]; 

    //setup my cells data here...

    return cell;
}

这段代码有什么问题吗?

以前有人见过这样的事吗?

2 个答案:

答案 0 :(得分:1)

应该重复使用单元格。如果要关闭它,请关闭单元格重用。

您的问题实际上在您没有包含的代码中。

//setup my cells data here...

此代码负责完全加载单元格中表格中各行之间不同的各个方面。那些不止一次出现的数据?您需要在拥有它的情况下进行设置,或者如果不这样做则将其清除。

例如:

cell.textLabel.text = str ? str : @"";

通过这种方式,一遍又一遍地使用相同的几个单元格,并且不需要频繁地设置和销毁表格单元格。

(正如我所提到的,你可以关闭细胞再利用。但是你应该让它发挥作用。)

答案 1 :(得分:0)

我想我已经解决了这个问题,我只需要在else块中添加if (cell == nil)语句来清除单元格填充的值吗?

这是正确的方法吗?