更新UITableViewCell子视图

时间:2013-05-12 21:16:18

标签: ios objective-c

我有一个非常简单的问题,我不能(对于我的生活)弄清楚。我知道当我听到答案时,我会打发自己。

我有一个UITableView,其上有UITableViewCell个子类。每个单元格都有一个UIButton子视图。

如果布尔值为false,我需要禁用每个单元格上的按钮;如果/当布尔值更改为true时,应启用该按钮。我会观察KVC。我应该在哪里有这个处理程序?在UIViewController?如果是这样,告诉单元格他们需要禁用/启用按钮的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

我会在cellForRowAtIndexPath中实现show / hide功能,并在更改布尔值时调用[tableView reloadData](或更具体的重新加载/刷新调用)。

答案 1 :(得分:0)

我看到两种方法。

1)reloadData(如前所述)

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"data.boolean"]) {
        [self.tableView reloadData];
    }
}

2)第二个是迭代可见细胞。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"data.boolean"]) {
        for (MyTableViewCell *cell in [self.tableView visibleCells]) {
            cell.button.hidden = !self.data.boolean;
        }
    }
}