我正在尝试实现具有与TabView
类似功能的自定义视图。我正在使用ViewBuilder
初始化显示的选项卡。但是,这意味着当我将多个视图传递给初始化程序时,内容为TupleView
。如何一次只显示其中一个视图?
struct TabbedView<Content> : View where Content : View {
@State var selected:Int = 0
var content:Content
var body: some View {
content
}
init(@ViewBuilder _ content:() -> Content) {
self.content = content()
}
}
struct TestView: View {
var body: some View {
TabbedView {
Text("A")
Text("B")
}
}
}
好吧,也许它不是很SwiftUIyish,但它可以工作;)
struct TabbedView<Content> : View where Content : View {
@State var selected:Int = 0
var content:[Content]
var body: some View {
content[selected]
}
init(@ViewBuilder _ content:() -> [Content]) {
self.content = content()
}
}
struct ContentView: View {
var body: some View {
TabbedView { [
Text("A"),
Text("B")
]
}
}
}