tableview单元格和segue上的奇怪问题

时间:2013-09-22 01:34:16

标签: objective-c uitableview segue nsindexpath

UITableView

上有几对有线问题
  1. 更改indexPath.row = 0的单元格背景颜色。但是一些细胞也发生了变化。它随机看起来。
  2. 创建UITableViewCell的两种方法,但非常奇怪......,太复杂了,请参阅SMFirstViewController.m github

  3. prepareForSegue:sender:无效。很奇怪,就{CELL方法1或2而言indexPath = [self.tableView indexPathForCell:sender]有时indexPathnull

  4. 这些问题看起来太复杂了,所以我将代码上传到github。 https://github.com/i0sdev/Temp/tree/segueSMFirstViewController.m是发生问题的文件。

    非常感谢您能帮忙修复!谢谢!

1 个答案:

答案 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应该可以正常工作。