2012-03-13 12 views
0

私はテーブルビューを持っています。ユーザがセルを選択すると、accessorytypeUITableViewCellAccessoryCheckmarkに設定されます。iosでtableviewのすべてのセルをオフにする方法

私は前の画面に移動し、次にこのテーブルビューに進み、セルがチェックされたままになります。

すべてのチェックボックスをオフにする方法はありますか?基本的にはすべてUITableViewCellAccessoryNoneに設定されていると思います。

clearsselectiononviewwillappearと呼ばれるテーブルビューの方法があります

+0

あなたはあなたのcellForRowAtIndexPathコードを投稿することができますか? – user523234

+0

コードの一部を投稿する – hchouhan02

+0

完全なリロードを強制する場合は、 ' - (void)reloadRowsAtIndexPaths :(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation'を試してください。しかし、これは正しい方法ではありません。 'MODEL'に変更を加えて' VIEW'を更新する必要があります。 'MODEL'と' cellForRowAtIndexPath'が正しければ、単純な 'reloadData'がそのトリックを行います。 –

答えて

1

をAppleのdoc をチェックしてください。

0

(私のロジックは、細胞のaccessorytypeを設定するときは、このです)私は、ビューが表示されたときに、reloadDataを使用してみましたが、それはcellForRowAtIndexPathをトリガしていないようです誤って上書きした可能性があります。デフォルトの動作はYESです。それが表示されるたびに(および作成したときだけでなく)あなたはそれが更新されるようにtableView:willDisplayCell:forRowAtIndexPath:の代わりcellForRowAtIndexPathにaccessorytypeを設定する必要がありますUITab

+0

私は選択をクリアすると思います。つまり、セルを選択するとハイライトされます。私は強調表示された行をクリアすると思います。私は全くこれを無効にしなかった – pdiddy

2

私はこれがあなたが望むことをするかもしれないと思います。 didSelectRowAtIndexPath:私はあなたのtableViewへの対応の一環として、すべてのセルをオフにするとしますが、あなたはどこにこのコードを挿入することができます:

- (void)tableView:(UITableView *)tableView 
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Uncheck any visible, checked cells. 
    NSArray *visibleCells = [tableView visibleCells]; 
    for (UITableViewCell *cell in visibleCells) { 
     [cell setAccessoryType:UITableViewCellAccessoryNone]; 
    } 

    // Now do whatever else you want in response to a row being selected. 
} 
関連する問題