我有一个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是不是应该已经分配了所有单元格?谢谢你的帮助!
答案 0 :(得分:1)
您只能获得对可见单元格的引用。您可以向tableView询问可见的单元格数组(或其索引路径,忘记哪些)。细胞是一种暂时存在的东西,而它是可见的 - 这就是为什么你可以回收它们。
您需要做的是在代码中注意,当该单元格重新出现时,您希望对其执行一些特殊操作。