SwiftUIでは、次のような条件に基づいて「空の」ビューを表示する必要があることがよくあります。
struct OptionalText: View {
let text: String?
var body: some View {
guard let text = text else { return }
return Text(text)
}
}
残念ながら、これはコンパイルされません。guard
の本体はビューを返す必要があるためです。つまり、text
がnil
の場合は「空の」ビューです。 text
がnil
のときに「空の」ビューをコンパイルしてレンダリングするように、この例をどのように書き直す必要がありますか?
Xcode 12ベータ2以降、Group
ビューは不要になり、if let
宣言がサポートされているため、結果のbody
はもう少し簡潔にすることができます。
var body: some View {
if let text = text {
Text(text)
} else {
EmptyView()
}
}