2016-04-18 5 views
0

セルのアクセシビリティタイプを変更する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の後に呼び出されたかどうかわからない... 助けてくれてありがとう!

+0

非常に創造的なアプローチ)「myNumber」とは何ですか?それは定数ですか? – Zapko

+0

サイドノート:もしあなたがあなたのセルを再利用しているなら、ここで何をやっているかにいくつかの問題が起こるでしょう。データソース参照なしでセルにaccessoryCheckmarkを表示すると、下にスクロールするとそのセルが再利用され、期待しない場所にチェックマークが表示されます。私はあなたのテーブルに現れるいくつかのロールしか持っていないと思うので、なぜこの問題に気付かなかったのですか? – pnizzle

答えて

1

- (__kindofUITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPathを使用します。

+0

私はセルを2回定義しています。ありがとう! – Lolipop52

関連する問題