SwiftUIではビューの構築にif文を使うことができる。
var body: some View {
if Bool.random() {
return Text("YOU WIN!")
} else {
return Text("YOU LOSE")
}
}
Bool.ramdom()ではtrueとfalseをランダムで返すメソッドで、上記は返される値によって表示させるテキストを変える例だ。
次に以下の例を見てみよう。
var body: some View {
if Bool.random() {
return Image("win-image")
} else {
return Text("YOU LOSE")
}
}
一見同じように見えるコードだが、こちらの例は条件によって返すビューの型が異なる。
この場合、body計算型プロパティの戻り値some Viewの型が、実行時でないと定まらないためエラーが発生してしまう。
このような場合は、Groupビューに入れてしまうことでエラーを回避することができる。
var body: some View {
Group {
if Bool.random() {
Image("win-image")
} else {
Text("YOU LOSE")
}
}
}
Groupビューは内包するビューをまとめてしまうコンテナの役割を持ち、HTMLのdivタグにイメージとしては近い。
要は複数のビューをまとめて戻り値をGroupビューにしていることでエラーを回避しているので、VStackやHStackなどでまとめても同じようにエラーを回避することができる。