我有一个非常简单的问题,我(对于我的一生)无法弄清楚。我知道当我听到答案时我会打自己。
我有一个UITableView
, 和它的UITableViewCell
子类。每个单元格都有一个 UIButton 子视图。
如果布尔值为 false,我需要禁用每个单元格上的按钮;如果/当布尔值更改为 true,则应启用该按钮。我会观察KVC。我应该在哪里有这个处理程序?在UIViewController
? 如果是这样,告诉单元格他们需要禁用/启用按钮的最佳方法是什么?
我有一个非常简单的问题,我(对于我的一生)无法弄清楚。我知道当我听到答案时我会打自己。
我有一个UITableView
, 和它的UITableViewCell
子类。每个单元格都有一个 UIButton 子视图。
如果布尔值为 false,我需要禁用每个单元格上的按钮;如果/当布尔值更改为 true,则应启用该按钮。我会观察KVC。我应该在哪里有这个处理程序?在UIViewController
? 如果是这样,告诉单元格他们需要禁用/启用按钮的最佳方法是什么?
我将在 中实现显示/隐藏功能cellForRowAtIndexPath
,并[tableView reloadData]
在对布尔值进行更改时调用(或更具体的重新加载/刷新调用)。
我看到两种方法。
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;
}
}
}