for(NSUInteger j = 0 ; j < [sports count] ; j++){
NSIndexPath *loopPath = [NSIndexPath indexPathWithIndex:j];
if([pickerTable cellForRowAtIndexPath:loopPath].accessoryType == UITableViewCellAccessoryCheckmark){
[chosenSports addObject:[pickerTable cellForRowAtIndexPath:loopPath].textLabel.text];
}
}
此代码产生sigabrt错误。确切的错误是“与UITableView一起使用的索引路径无效。传递给表视图的索引路径必须包含指定段和行的两个索引。如果可能,请在UITableView.h中使用NSIndexPath上的类别。”提前致谢;
答案 0 :(得分:4)
错误是正确的。 NSIndexPaths由行和节号组成,对于表格视图尤其如此,考虑到它们实际上对实现的盲目程度(考虑到它们依赖于数据源和委托)。你有一个简单的初始化错误,请尝试这样做:
for(NSUInteger j = 0 ; j < [sports count] ; j++){
NSIndexPath *loopPath = [NSIndexPath indexPathForRow:j inSection:0];
if([pickerTable cellForRowAtIndexPath:loopPath].accessoryType == UITableViewCellAccessoryCheckmark){
[chosenSports addObject:[pickerTable cellForRowAtIndexPath:loopPath].textLabel.text];
}
}
答案 1 :(得分:2)
除了@ CodaFi的回答,您应该知道cellForRowAtIndexPath
会为当前不可见的行返回nil
。
所以你的循环只添加当前可见单元格中的对象,这可能不是你想要的。