3

私には(私の人生では)理解できない非常に単純な質問があります。答えを聞いたとき、私は自分自身を叩くつもりであることを知っています.

私には がありUITableView、その上にUITableViewCellサブクラスがあります。各セルには UIButton サブビューがあります。

ブール値が false の場合、各セルのボタンを無効にする必要があります。ブール値が true に変更された場合に、ボタンを有効にする必要があります。KVCを観察します。このハンドラーはどこに置くべきですか?でUIViewController?もしそうなら、ボタンを無効/有効にする必要があることをセルに伝える最良の方法は何ですか?

4

2 に答える 2

4

で表示/非表示機能を実装し、ブール値が変更されたときにcellForRowAtIndexPath呼び出し[tableView reloadData](またはより具体的な再読み込み/更新呼び出し) を行います。

于 2013-05-12T21:36:28.610 に答える
0

私は2つのアプローチを見ています。

1) reloadData (以前に提案されたように)

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

2) 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;
        }
    }
}
于 2013-05-12T21:44:58.227 に答える