iphone 選択状態 UITableview で複数の行を選択する




uitableviewcell 複数 (4)

と遊ぶ

tableView.allowsMultipleSelection

これは私に数時間のトラブルを救った。 here見つかりましhere 。

この質問には既に回答があります:

AppleがネイティブのAlarmアプリで行っているように、私はUITableviewで複数の行を選択したい

どうやってやるの?

私がこれまでに見た答えはすべて古いもので、「できない」とか、ネイティブMailアプリの複数行の選択を参照しています。 その方法は、あなたが "編集"モードで最初に入力しなければならないので、私が望むものではありません。 私はすぐに行を選択できるようにしたい。

誰かが助けることを願っています。

キリスト教の


Clockアプリケーションの「Selected」行は、 UITableViewCellAccessoryCheckmarkアクセサリタイプのセルです。

それを達成するための可能なステップは次のとおりです。

  1. 各行のどこかに、チェック済み/未チェック状態を格納します。
  2. cellForRowAtIndexPath:チェックされた行のセルのメソッドで、セルのaccessoryTypeプロパティをUITableViewCellAccessoryCheckmark設定しUITableViewCellAccessoryCheckmark
  3. cellForRowAtIndexPath:チェックされていない行のセルに対して、セルのaccessoryTypeプロパティをUITableViewCellAccessoryNone設定しUITableViewCellAccessoryNone
  4. セルが選択(タップ)されると、セルの選択が解除され、チェックされたステータスが反転され、セルがそのインデックスパスに再ロードされます

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

行う

    if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark){
       [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
    }else{
       [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
    }

編集:

また、チェックされたセルをマップする配列を使用しなければならず、cellForRowAtIndexPathでは、accessoryTypeをチェックするかどうかを確認する必要があります。


私が見つけた最も簡単な方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
}

呼び出すことによってどのセルが選択されているかを見ることができます:

NSArray *selectedCells = [self.tableView indexPathsForSelectedRows];




uitableview