iphone - 選択状態 - uitableviewcell 複数




UITableviewで複数の行を選択する (4)

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

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

どうやってやるの?

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

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

キリスト教の


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

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

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

と遊ぶ

tableView.allowsMultipleSelection

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


ストーリーボードを使用している場合は、Table Viewをクリックし、右側のパネルのAttributes Inspectorで「selection」プロパティを「Multiple Selection」に設定します。 Xcodeバージョン8.2.1を使用してこれを検証しました。


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

- (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