【SwiftUI】Viewを繰り返して表示する

この記事は約3分で読めます。

Viewを繰り返し表示する場合は、ForEachを使用すると比較的簡単に実装することができます。
実装方法を何パターンかご紹介します。

1.配列の要素(例では文字列)を使用する場合

表示したい文字列を配列で定義した後、ForEachで表示させます。
idにはselfを指定します。

import SwiftUI

struct RepeatView: View {
    let textArray = ["テキスト1", "テキスト2", "テキスト3"]
    
    var body: some View {
        VStack {
            Text("1.配列の要素を単純に繰り返し")
            ForEach(textArray, id: \.self) { text in
                Text(text)
            }
        }
    }
}

2.配列の要素とインデックスを使用する場合

似たような実装方法ですが、配列の要素のインデックスを合わせて使用できる方法もあります。
上記1.のVStack内のコードを以下のように置き換えるだけです。

Text("2.配列の要素を繰り返し、要素のインデックスを表示")
ForEach(0..<textArray.count, id: \.self) { index in
    Text(textArray[index] + "[\(index)]")
}

3.配列の要素と任意のIDを定義したい場合

配列の要素を使用することに加えて、任意のIDを使用したい場合は”Identifiable”プロトコルを使用すると実装しやすいかなと思います。

ForEachでidを指定しなくてよい分、他の方法よりも若干コードが見やすくなるかなと思います。
(他にもよい実装方法があるかもしれません)

struct RepeatView: View {
    let idTextArray = [
        IdAndText(id: 4, text: "テキスト4"),
        IdAndText(id: 5, text: "テキスト5")
    ]
    
    var body: some View {
        VStack {
            Text("3.配列の要素を繰り返し、IDを自分で指定")
            ForEach(idTextArray) { idText in
                HStack {
                    Text("TEXT:\(idText.text)")
                    Text("ID:\(idText.id)")
                }
            }
        }
    }
}

struct IdAndText: Identifiable {
    var id: Int
    var text: String
}
タイトルとURLをコピーしました