引用在cellForRowAtIndexPath中创建的UITableViewCell

时间:2011-12-07 22:02:55

标签: iphone uitableview

我的TableView标题上有一个按钮,它是一个空框,按下时,是一个复选标记。我在该标题的单元格上有相同的按钮。所以我基本上想对该部分中的每个单元格执行操作。我正在使用WWDC 2010中的Animating TableView作为我的示例。头对象有一个整数数组,用于跟踪其部分中有多少行。

我不确定从这里开始,如何让自定义UITableViewCell执行我的操作。有什么想法吗?感谢。

到目前为止,我有这样的事情:

- (void)selectAllCheckmarksInSectionHeaderView:(SectionHeaderView *)sectionHeaderView forSection:(NSInteger)section {
    SectionInfo *sectionInfo = [self.SectionInfoArray objectAtIndex:section];
    int totalRows = [[sectionInfo rowHeights] count];
    for (int row = 0; row < totalRows; row++) {
        NSIndexPath *path = [NSIndexPath indexPathForRow:(NSUInteger)row inSection:section];
        OrderTableViewCell *cell = (OrderTableViewCell *)[_orderTableView cellForRowAtIndexPath:path];
        cell.CheckmarkButton.selected = YES;
    }
}

但是我的OrderTableViewCell是零。

1 个答案:

答案 0 :(得分:0)

要引用位于节标题中的按钮,您必须将其分配给实例变量以保留对它的引用。要获取对部分中所有单元格的引用并更新它们,您需要尝试这样的事情......

CGRect sectionRect = [self.tableView rectForSection:0]; // Rect for first section
NSArray *indexPathsInSection = [self.tableView indexPathsForRowsInRect:sectionRect];

for (NSIndexPath *indexPath in indexPathsInSection)
{
    // Obtain the cell at each index path and update its accessory state
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

当然这是一个过于简单的例子。更灵活的方法是在“选择”某个部分时更新某个模型对象并重新加载该表。然后在-tableView:cellForRowAtIndexPath:中,您将确定是否应根据整个部分的模型对象勾选某个部分中的单元格。