【SwiftUI】選択可能なListの生成

選択可能なListを生成する方法を解説します。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】12.2
【Swift】5.3.1
【iOS】14.2
【macOS】Catalina バージョン 10.15.7
スポンサーリンク

単項目選択

選択可能なListを生成するには、次の2つの条件があります。

  1. 引数(selection)に選択値を格納するプロパティを指定する。
  2. 対象のViewを編集モードにする

この例では、引数(selection)に選択値を格納するプロパティとして、selectionValueを指定しています。
各行に付加する.tag()は対象のViewを特定する目印です。この値がselectionに連携します。
tagの型はHashableプロトコルに準拠していれば良いので、数値、文字列等のSwift標準の型がほぼ使えますが、selectionで指定するプロパティと型を合わせる必要があります。

environmentモディファイアで、Listビューの編集モード(editMode)をactiveに設定しています。
環境変数editModeはBinding型なので、Binding型の値を生成するconstantメソッドを使用して値を設定します。

単項目選択の例

スポンサーリンク

複数項目選択

引数(selection)に渡すプロパティの型をSet型(Hashableな要素の集合)にすると、複数選択が可能になります。

複数項目選択の例

スポンサーリンク

Listを繰り返し処理(ForEach)で生成した場合

ForEachを使った繰り返し処理でリストを生成した場合は.tag()による値の設定は不要となります。

ForEachには、【範囲指定】と【データ指定】の2種類の繰り返しがあります。
ForEachについて、詳しくはこちらの記事で解説しています。

【SwiftUI】ForEachの使い方(1/2)
(2023/09/18 更新) ForEachは繰り返し処理の中で、Viewを生成する仕組みです。文字列の入った配列をループしてそれぞれをTextViewに変換する、またはメニュー項目に追加するような動きを実現します。さらに、ForEach...

範囲指定によるリストの生成

範囲指定によるList生成のケースでは、データ列のインデックス(0から始まる)がselectionと連携します。

範囲指定によるリストの生成

データ指定によるリストの生成

データ指定によるListの生成時には、idに設定した値がselectionと連携します。
この例ではidを配列の要素(文字列)としていますので、selectionで指定するプロパティ(selectionValue)も文字列で宣言する必要があります。

idに指定される値は基本的にユニークであるのが前提となります。
配列に同名の要素があった場合、想定外の動きになりますので注意してください。

データ指定によるリストの生成

スポンサーリンク

あわせて読みたい記事

【SwiftUI】Listの使い方
(2022/03/09 更新) Listはデータの一覧表示をするのに適したViewです。 画面に収まらない量の場合はスクロール表示になるなど、UIKitのUITableViewに似ていますが、はるかに簡単に使えます。 ListはForEac...
【SwiftUI】Viewの編集モード(editMode)について
(2020/11/03 更新) Viewの編集モードについて解説します。
【SwiftUI】ForEachの使い方(1/2)
(2023/09/18 更新) ForEachは繰り返し処理の中で、Viewを生成する仕組みです。文字列の入った配列をループしてそれぞれをTextViewに変換する、またはメニュー項目に追加するような動きを実現します。さらに、ForEach...