我UITableView
indexPath.row = 0
的单元格背景颜色。但是一些细胞也发生了变化。它随机看起来。创建UITableViewCell
的两种方法,但非常奇怪......,太复杂了,请参阅SMFirstViewController.m
github
prepareForSegue:sender:
无效。很奇怪,就{CELL方法1或2而言indexPath = [self.tableView indexPathForCell:sender]
有时indexPath
是null
这些问题看起来太复杂了,所以我将代码上传到github。 https://github.com/i0sdev/Temp/tree/segue,SMFirstViewController.m
是发生问题的文件。
非常感谢您能帮忙修复!谢谢!
答案 0 :(得分:1)
您的问题是您没有考虑方法1中的单元重用(您甚至不应该使用方法2)。一旦你的if语句被执行,你将使你的单元格变成褐色,当该单元格被重用时,无论它是什么indexPath.row,它仍然是棕色的。每当你像indexPath一样基于indexPath设置单元格的某些属性时在做,你需要有一个else子句,而不仅仅是一个if。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *identifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (indexPath.row == 0)
{
cell.backgroundColor = [UIColor brownColor];
cell.textLabel.textAlignment = NSTextAlignmentCenter;
}else{
cell.backgroundColor = [UIColor whiteColor];
cell.textLabel.textAlignment = NSTextAlignmentLeft;
}
NSArray * array = [[list objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
cell.textLabel.text = [array valueForKey:@"Number"];
cell.detailTextLabel.text = [NSString stringWithFormat:@"row: %d", indexPath.row];
return cell;
}
只要你坚持使用方法1,那么prepareForSegue应该可以正常工作。