2009-10-06 12 views
14

ユーザーがツールバーのボタンを押したときに、テーブル(UITableView)内のすべてのセルを選択する最も良い方法は何ですか?UITableView内のすべてのセルを選択する

+0

を?テーブル行の選択を維持しようとしている場合は、App Storeから拒否されることに注意してください。 –

答えて

8

あなたは、テーブルビューのselectRowAtIndexPathメソッド呼び出しのセルを選択することができます:あなたはのUITableViewで複数のセルを選択することはできませんしかし

[menuTable selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; 

を。 セルのオン/オフ状態を表示して処理する場合は、UITableViewCellAccessoryCheckmarkタイプのアクセサリビューのセルを使用する必要があります。あなたのボタンアクションで

、indexPathをループして、それを呼び出します:ここで

for (i = 0; i < [tableView numberOfSections]; i++) { 
    for (j = 0; j < [tableView numberOfRowsInSection:i]; j++) { 
     indexPath.row = j; 
     indexPath.section = i; 
     [tableView selectRowAtIndexPath:indexPath animated:animated scrollPosition:scrollPosition]; 
    } 
} 
+1

テーブルビューで複数の選択が可能な場合は、複数のセルを選択できます。 – titaniumdecoy

+1

@titaniumdecoy、あなたは正しいです。残念ながら、その機能は2009年に利用できませんでした) – Vladimir

+0

'UITableViewScrollPosition'を' .None'に設定することを忘れないでください。 –

3

はそれを自分自身を試してみましたが、これを試していないがあります(詳細はドキュメントを参照してください)テーブルを横断するには、うまくいきます。

for (int i = 0; i < [ptableView numberOfSections]; i++) { 
    for (int j = 0; j < [ptableView numberOfRowsInSection:i]; j++) { 
     NSUInteger ints[2] = {i,j}; 
     NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:ints length:2]; 
      UITableViewCell *cell = [ptableView cellForRowAtIndexPath:indexPath]; 
      //Here is your code 

    } 
} 
+0

前回削除したセルから新しいセルを選択するとき。 UITableViewで複数選択できないようです – Vladimir

+0

tableView:willDeselectRowAtIndexPath:delegateメソッドで選択を拒否できるかどうか疑問です。 (行を選択解除したくない場合は、nilを返します) – mahboudz

+0

私はどちらでも動作しません。 とにかく、主なポイント(imoですが、HIGの正確な場所を見つけることができません)は、一度に複数のセルを選択してはならず、選択状態を永続的にしてはいけません。セルの状態を変更/表示するには、セルのチェックマークのアクセサリビューを使用する必要があります。 – Vladimir

29

は私の方法である

19

これは、テーブルビュー内のすべての行を選択することができます。このため、あなたのユースケースは何

for (NSInteger s = 0; s < self.tableView.numberOfSections; s++) { 
     for (NSInteger r = 0; r < [self.tableView numberOfRowsInSection:s]; r++) { 
      [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:r inSection:s] 
             animated:NO 
            scrollPosition:UITableViewScrollPositionNone]; 
     } 
    } 
関連する問題