在insertRowsAtIndexPaths之后,UITableViewCell为零

时间:2012-07-22 15:18:03

标签: objective-c ios uitableview

我有一个tableView,它最初有4个部分,每个部分有1行。根据用户与第一行的交互,我需要插入或删除该部分中的第二行。之后,我需要进行单元格的设置,然后点击它。这是我处理交互的代码:

-(void) tableViewSwitchToggled: (UISwitch*) sender{
    targetSection = sender.tag; //each switch is added to cell's contentview and it's tag is set to indexPath.section
    UITableView* tableView = ...

    if (someBool){
        [tableView insertRowsAtIndexPaths: [NSArray arrayWithObject: [NSIndexPath indexPathForRow: 1 inSection: targetSection]] withRowAnimation: UITableViewRowAnimationTop];
        UITableViewCell* detailsCell = [tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: targetSection + 1]]; //I try to get the first row of the next section and it is always nil!!!
        //do something with detailsCell content
    }
    else{
        [tableView deleteRowsAtIndexPaths: [NSArray arrayWithObject: [NSIndexPath indexPathForRow: 1 inSection: targetSection]] withRowAnimation: UITableViewRowAnimationRight];
        UITableViewCell* detailsCell = [tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: targetSection + 1]]; //and it works perfectly, giving me the cell address
         //do something with detailsCell content
    }
}

所以这是我的问题 - 为什么我插入一行后会得到一个nil单元格? tableView是不是应该已经分配了所有单元格?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您只能获得对可见单元格的引用。您可以向tableView询问可见的单元格数组(或其索引路径,忘记哪些)。细胞是一种暂时存在的东西,而它是可见的 - 这就是为什么你可以回收它们。

您需要做的是在代码中注意,当该单元格重新出现时,您希望对其执行一些特殊操作。