如何在UITableView中获取所有表格单元格

时间:2014-10-24 08:48:52

标签: ios uitableview

我想获取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]];
    }
}  

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

当您使用UITableView时,它会重复使用您的单元格来优化您的内存。它会加载可以在屏幕上绘制的单元格数量,并在滚动时再次使用它们。这就是为什么你只能获得可见细胞,而不是所有细胞。

如果您想知道哪些单元格处于打开/关闭状态,您必须保留另一个阵列并使用它来检查单元格的状态。

此外,您的单元格不应该有自己的状态,如果您使用的是MVC模式,则只有控制器知道它。您可以使用例如动作,块或委托。 Objective-C有很多沟通方式。

答案 1 :(得分:0)

UITableCell是MVC模式的V。您应该根据存储单元格状态的模型对象来考虑您的单元格。这就是为什么Apple将UITableViewDataSource与其他相关API分开的原因。