【SwiftUI】ForEachの使い方(1/2)

ForEachは繰り返し処理の中で、Viewを生成する仕組みです。
たとえば、名前の配列をループしてそれぞれをTextViewにしたり、メニュー項目に追加したりする事ができます。
さらに良いことに、ForEachは、Viewを手動で追加した場合に発生する10個までの制限に見舞われません。

ForEachの繰り返しの対象については、次の2通りの指定方法があります。

  1. 繰り返す範囲を数値(Int)で指定する方法
  2. 各要素の一意性を保証したデータコレクションとして渡す方法

本記事(1/2)では、1番目の方法について解説します。

2番目の方法については、こちらの記事を参照して下さい。

【SwiftUI】ForEachの使い方(2/2)
ForEachの繰り返し処理にて出力したデータを変更(追加、削除、並び替え)できるようにするには、SwiftUIが該当データを識別する為に、各要素の一意性が保証されている必要があります。本記事(2/2)では、各要素の一意性を保証したデータ...

スポンサーリンク

環境

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

【Xcode】11.2.1
【Swift】5.1
【iOS】13.2.2
【macOS】Catalina バージョン 10.15.2

基本的な使い方

ForEachは複数のViewを生成しますので、FormやVStackなどのコンテナ内に記述するのが前提となります。
引数にはSwiftの範囲型(Range)で繰り返す範囲を指定します。上記の”1..<6”は1以上6未満(つまり1〜5)の範囲を指定しています。
ForEachは、繰り返すすべてのアイテム(この場合は数値)に対して、{}で示すクロージャーを1回実行し、引数として現在のループアイテムを渡します。
1から5までループする場合は、1,2,3・・のように渡されます。

【図1:基本的な使い方】

ForEachのイニシャライザの定義で指定されている引数の型がRange<Int>の為、同じ範囲指定でも、ClosedRange(”1...5”のような記述)はこの場合使えないので注意して下さい。コンパイルエラーになります。

配列(コレクション)での繰り返し処理

範囲型(Range)で繰り返す範囲を指定する方法を応用して、配列(コレクション)を使った繰り返し処理ができます。

【図2:配列(コレクション)での繰り返し処理】

但しこの方式が使えるのは、データの変更(追加・削除・並び替え)が発生しない出力専用として使う場合のみです。(Pickerのリスト指定など)
データの変更が発生する場合のForEachの使い方は次の記事(2/2)で解説します。

【SwiftUI】ForEachの使い方(2/2)
ForEachの繰り返し処理にて出力したデータを変更(追加、削除、並び替え)できるようにするには、SwiftUIが該当データを識別する為に、各要素の一意性が保証されている必要があります。本記事(2/2)では、各要素の一意性を保証したデータ...
SwiftUI
スポンサーリンク
スポンサーリンク
カピ通信

コメント