0

テーブルビューセルを使用してアプリをプログラミングしています。セルに触れると、別のView Controllerに移動し、そこでスイッチをアクティブにして、このステータスをplistファイルに保存します。tableviewcell に戻り、plist ファイルから情報を読み取り、タッチしてアクティブにしたセルの背景色を更新します。問題は、セルが表示されている場合、ナビゲーションボタンを使用してテーブルビューセルに戻ると、色付きの背景が表示されないことです。下または上にスクロールした場合にのみ、カラー セルが更新されます。reloadData メソッドを試しましたが、成功しませんでした。IOS API では、表示されているセルは reloadData メソッドで更新されると言われています。前もって感謝します。

- (void)viewWillAppear:(BOOL)animated {
controladorRegistre = [[ControladorRegistres alloc]initRegistreAmbCategoria];
[self.tableCategories reloadData];
[super viewWillAppear:animated];

}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell       *)cell
            forRowAtIndexPath:(NSIndexPath *)indexPath
{
//Pinta la celda si esta activada
registre = [controladorRegistre getRegistreCategoria:cell.textLabel.text];
BOOL estaActivat = [[registre objectForKey:@"estaActivat"] boolValue];
if (estaActivat) {
    [cell setBackgroundColor:[UIColor redColor]];
}else{
    cell.backgroundColor = [UIColor whiteColor];
}
}
4

1 に答える 1

0

willDisplayCell別のビュー コントローラーから遷移するときに、既に読み込まれているセルが表示されたときに が自動的に呼び出されないため、更新コードを に配置する必要がありますviewWillAppear

私は通常、これを のような別のメソッドに分割しupdateCellsます。

[_tableView visibleCells]通常、関連するセルにはまたはでアクセスできますindexPathsForVisibleCells。あなたの場合、2番目のView Controllerを開始した選択したセルの参照を保持して、それを使用できます。

于 2012-10-01T06:08:53.910 に答える