はじめに
View内にif文があると美しくないので、View内でif文を使う時用のViewを用意してみました。
実装
PlaceholderView
import SwiftUI
struct PlaceholderView<Content: View, Placeholder: View>: View {
var `if`: Bool
@ViewBuilder var content: () -> Content
@ViewBuilder var placeholder: () -> Placeholder
var body: some View {
if `if` {
content()
} else {
placeholder()
}
}
}
使い方
ContentView
import SwiftUI
struct ContentView: View {
@State var isLoading: Bool = false
var body: some View {
VStack(spacing: 50) {
PlaceholderView(if: isLoading) {
Text("コンテンツ")
} placeholder: {
Text("プレイスホルダー")
}
Button {
isLoading.toggle()
} label: {
Text("切り替え")
}
}
}
}
動画
おわり
最近、TCAを勉強してるのですが、ReducerProtocol
が追加される前の記事が多くて辛いです笑