2012-03-21 4 views
8

私は、このプロパティの値はYES、チェックマークをタップする。次のタップされた各列に配置されている場合、私が」UITableView.allowsMultipleSelectionが有効なときにチェックマークが表示されないのはなぜですか?

self.tableView.allowsMultipleSelection=YES; 

をアップルのドキュメントの状態を設定iOS5.1アプリでのUITableViewを有します行が再びチェックマークを削除します。 "

背景が青に設定されているため、複数の行を選択することができます。ただし、チェックマークは表示されません。カスタムUITableViewCellsを使用しているため、チェックマークをdidSelectRowAtIndexPathに以下のように設定する必要がありますか?

cell.accessoryType = UITableViewCellAccessoryCheckmark; 
+1

Iは正確有しますその同じ問題。あなたはこの問題の解決策を見つけましたか?私にお知らせください。 – AlexR

+0

AlexRと同じ質問です。 「私は同じ問題を抱えていたので、それを無視して機能を再実装することにしました」の下の答えは満足できません。 – Tommy

答えて

5

私のuitableviewcellサブクラスでチェックマークを手動で行います。 didSelectRowAtIndexPathでUITableViewCellAccessoryCheckmarkを手動で実行し、どのトラックが選択されているかを確認する必要があります。私はそのようなものをお勧めします:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell* cell = [tableview cellAtIndex:indexPath]; 
    if(cell.accessoryType == UITableViewCellAccessoryCheckmark) 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    else 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 

注:私はこれをテストしませんでしたが、あなたに基本的な考えを与える必要があります。ご質問がある場合はお知らせください。あなたはデフォルトのuitableviewcellを使って、それがチェックマークをしたかどうか試しましたか?あなたがサブクラスで修正していない限り、サブクラスには問題はないと思います。

+1

ありがとうございます。これは私が以前にしたことですが、アップル社のドキュメントではiOS5 +で自動的に起こると思われます。私はこのように今実装しました。しかし、特定の状況で自動的にチェックマークに関連して追跡しようとしているバグがあるかもしれません。 – ChrisP

+1

ああ、大丈夫です。うん、私はそれがチェックマークが自動的に処理する必要がありますドキュメントから思われることに同意します。おそらくそれが正しいガイドラインであることを示唆しているのでしょうか?とにかく、もう一度私はそれがバグであることに同意するか、ドキュメントを改訂するべきです。 – daltoniam

1

別のオプションは、使用するのtableViewある:didDeselectRowAtIndexPath:のtableViewに加えて:didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

{

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

cell.accessoryType = UITableViewCellAccessoryCheckmark; 

}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { 

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

cell.accessoryType = UITableViewCellAccessoryNone; 

}

+0

これを行うと、チェックボックスが左ではなく右に表示されます。 –

関連する問題