我想获取UITableView中的所有单元格,我已经尝试了[self.tableView visibleCells],但它只返回可见单元格。因为我在表格单元格上有一个开关,我想循环所有单元格以检查它是否打开。这是我的代码:
NSMutableArray *settings = [[NSMutableArray alloc] init];
NSArray *cells = [self.tableView visibleCells];
NSMutableArray * saveCodes = [[NSMutableArray alloc] init];
for(FilterTableCell *cusCell in cells){
if(cusCell.typeSwitch.isOn == TRUE){
[saveCodes addObject:[NSNumber numberWithInt:cusCell.locationTypeID]];
}
}
感谢您的帮助
答案 0 :(得分:0)
当您使用UITableView时,它会重复使用您的单元格来优化您的内存。它会加载可以在屏幕上绘制的单元格数量,并在滚动时再次使用它们。这就是为什么你只能获得可见细胞,而不是所有细胞。
如果您想知道哪些单元格处于打开/关闭状态,您必须保留另一个阵列并使用它来检查单元格的状态。
此外,您的单元格不应该有自己的状态,如果您使用的是MVC模式,则只有控制器知道它。您可以使用例如动作,块或委托。 Objective-C有很多沟通方式。
答案 1 :(得分:0)
UITableCell是MVC模式的V。您应该根据存储单元格状态的模型对象来考虑您的单元格。这就是为什么Apple将UITableViewDataSource与其他相关API分开的原因。