1

私はVCに実装UITableViewDelegateしています。UITableViewDataSource

私はこのコードを持っています:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
    (NSIndexPath *) indexPath {
    // do stuff 
    if(condition){
        cell.textLabel.backgroundColor = [UIColor redColor];
    }
    else {
        cell.textLabel.backgroundColor = [UIColor blackColor];
    }
}

かなり標準的なもの。私が直面している問題は、表示されているセルの最初のセットに色がないことです。表示されていないセルまでスクロールすると、正しく色付けされたセルが表示されます。スクロールして戻ると、セルに色が付いています。

セルが必要に応じて「作成」および「破棄」されることを理解しています。これにより、その一部が説明されます。cellForRowAtIndexPath何かが表示される前に起動さ、色付け条件がヒットされる理由がわかりません...無着色。

回避策はreloadData、テーブル ビューを呼び出した後に表示されているセルを反復処理することです。もっと簡単な方法があることを願っています。

デーン

4

1 に答える 1

2

tableView:willDisplayCell:forRowAtIndexPath:セルの色付けは、メソッドではなくデリゲート メソッドで行う必要がありますtableView:cellForRowAtIndexPath:

メソッドからセルの色付けロジックを削除し、tableView:cellForRowAtIndexPath:メソッドに移動しtableView:willDisplayCell:forRowAtIndexPath:ます。

于 2013-01-23T19:06:54.003 に答える