2012-01-27 6 views
1

どの行にもUITableViewCellAccessoryを設定する方法が必要です。しかし、キャッチは、私がUITableViewデリゲートメソッドの外側でそれを行うことができる必要があるということです。選択した行のUITableViewCellAccessoryを設定するにはどうすればよいですか? (iPhone/iPad)

これを試しましたが、付属品が表示されません。それは私がストーリーボードにIBにUITableViewを作成した任意の違いを行った場合

[[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathWithIndex:1]] setAccessoryType:UITableViewCellAccessoryCheckmark]; 

。データは静的で、セクションが1つしかないグループ化されたテーブルスタイルを使用しています。

誰かが私を助けてくれますか?

+0

セルをリロードできますか?さもなければ、あなたは 'setNeedsDisplay'を試すことができますが、私はそれがうまくいくと確信していません。 – smparkes

答えて

2

テーブルビューを操作する場合は、常に[NSIndexPath indexPathForRow:inSection:]を使用してください。

+1

あなたのご意見ありがとうございます、私はこれを試してみましたが、問題を解決しませんでした –

0

あなたは上のチェックを必要とするindexPathかを把握して、当該セルが時々バックビューに、ビューの外にスクロールしてもので、あなたのテーブルビューがスクロールされている場合は、この

UITableViewCell * cell = [tableView cellForRowAtIndexPath:someIndexPath]; 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
+0

こんにちは、ありがとうご提案。しかし、私はこれが私がすでに持っているものと同じだと信じています... –

+0

ええ、それはフライではアクセサリの種類を変更する可能性があります(誰かが彼らがそれをやったと言うまで)。私は編集アクセサリーそれが影響を及ぼすためには、フープを飛び越す必要があります。 – smparkes

3

ようなものを使用することができますそのセルの内容をUITableViewメソッドcellForRowAtIndexPath:内からのみ管理する必要があります。その理由は、セルが再描画されるときに、tableviewオブジェクトがこのメソッドを呼び出して、可視セルが適切にレンダリングされることを確認するためです。 (表示されていないセルはレンダリングする必要はありません)

これは、テーブルビューで問題のセルをスクロールしなくても、セルの内容を処理する場所ですビュー。あなたがテーブルビューを使って作業するときにこのデザインパターンに従えば、あなたの人生はずっと楽になります。

このメソッドの中で、indexPath.srowとindexPath.rowの値をテストして(if文などを使用して)特定のセルを必要な方法で設定できるようにします。これには付属品を入れることも含まれます。

関連する問題