セルのアクセシビリティタイプを変更する2つの方法があります。 最初にすべてのセルがロードされた後に呼び出されます。ユーザーがいずれかのセルをクリックすると、もう1つが呼び出されます。willDisplayCellメソッドからのキャントアクセスセル
2番目の方法は正常に動作し、選択したセルからチェックマークを削除します。残念ながら、最初のものは何もしません(セルの1つにチェックマークを追加したい)。それは私を混乱させる、彼らのメソッドは、同じように動作する必要がありますbe shouldause、彼らshouldn?
// First method
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows]
lastObject]).row)
{
LanguageTableViewCell *cell = [self.tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:myNumber inSection:0]];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
// Second method
- (void)tableView:(UITableView)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
LanguageTableViewCell *cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:myNumber inSection:0]];
cell.accessoryType = UITableViewCellAccessoryNone;
}
私はクラスのセルを変更しようとしましたが、それでも動作しません。最初の関数が適切な時間= viewDidLoadの後に呼び出されたかどうかわからない... 助けてくれてありがとう!
非常に創造的なアプローチ)「myNumber」とは何ですか?それは定数ですか? – Zapko
サイドノート:もしあなたがあなたのセルを再利用しているなら、ここで何をやっているかにいくつかの問題が起こるでしょう。データソース参照なしでセルにaccessoryCheckmarkを表示すると、下にスクロールするとそのセルが再利用され、期待しない場所にチェックマークが表示されます。私はあなたのテーブルに現れるいくつかのロールしか持っていないと思うので、なぜこの問題に気付かなかったのですか? – pnizzle