我不知道为什么,但我的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;
}
这段代码有什么问题吗?
以前有人见过这样的事吗?
答案 0 :(得分:1)
应该重复使用单元格。如果要关闭它,请关闭单元格重用。
您的问题实际上在您没有包含的代码中。
//setup my cells data here...
此代码负责完全加载单元格中表格中各行之间不同的各个方面。那些不止一次出现的数据?您需要在拥有它的情况下进行设置,或者如果不这样做则将其清除。
例如:
cell.textLabel.text = str ? str : @"";
通过这种方式,一遍又一遍地使用相同的几个单元格,并且不需要频繁地设置和销毁表格单元格。
(正如我所提到的,你可以关闭细胞再利用。但是你应该让它发挥作用。)
答案 1 :(得分:0)
我想我已经解决了这个问题,我只需要在else
块中添加if (cell == nil)
语句来清除单元格填充的值吗?
这是正确的方法吗?