我知道这是一个古老的问题,但这次我有点扭曲。
正如标题所说,我的UITableView正在重复内容。在这种情况下,当在屏幕上滚动并返回屏幕时,背景颜色在单元格上不会发生变化。
我知道这可能是由于重复使用单元格,但我的问题是我不能只给每个单元格一个唯一的单元格标识符,因为我在我的Storyboard中构建了我的单元格,这需要在那里键入它。 / p>
那么我怎样才能解决这个问题,同时将我的单元格设计在我的故事板中呢?
一点代码:
static NSString *cellIdentifier = @"Cell";
SLDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if (!cell)
{
cell = [[SLDetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
[cell setBackgroundColor:[UIColor slateBackgroundGrey]]; //Set standard background colour
[cell.titleLbl setText:[self.tableTitles objectAtIndex:indexPath.row]]; //cell titles from an array (static data I made)
//This will occur for each cell, here are two examples
if ([cell.titleLbl.text isEqualToString:@"Aircraft"])
{
NSString *detailText = @"";
if (!self.flight.aircraft) detailText = @"N/A";
else detailText = self.flight.aircraft.name;
[cell.detailLbl setText:detailText];
}
if ([cell.titleLbl.text isEqualToString:@"Delete"])
{
UIView *containerView = [cell.titleLbl superview];
[containerView setBackgroundColor:[UIColor triggerRed]];
[cell.titleLbl setTextColor:[UIColor whiteColor]];
[cell.disclosureIndicator setHidden:YES];
[cell.detailLbl setText:@""];
}
对于删除单元格,我更改了单元格的颜色属性。
子类化prepareForReuse
以重置单元格数据无法停止重复数据,就像在语句中设置每个单独单元格中的颜色一样(如上所示)。
感谢。
答案 0 :(得分:3)
每当您返回一个单元格时,无论是否重用,您都必须配置所有单元格属性。否则,您会遇到一些情况,其中一些属性从上次开始被挂起。无论是从故事板还是其他方式创建单元格,这都适用,这是一个单元重用问题,仅此而已。
答案 1 :(得分:0)
您似乎拥有自定义UITableViewCell
子类。您可以覆盖该类中的prepareForReuse
方法并重置背景颜色(或者您想要重置的任何其他内容)。
确保在实施中致电[super prepareForReuse]
。
答案 2 :(得分:0)
来自Apple文档:
tableView中的表视图委托:cellForRowAtIndexPath:should 重复使用单元格时,请始终重置所有内容。
来源: UITableViewCell Class Reference
所以一定要在那里设置背景颜色。
希望它有所帮助。
答案 3 :(得分:0)
这个SO答案包含答案为什么以及如何使用UITableViewCell出队。如果您知道内容重复的原因:iPhone - dequeueReusableCellWithIdentifier usage