SwiftUI,为ViewBuilder的结果建立索引

问题描述 投票:0回答:1

我正在尝试实现具有与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")
        }
    }
}
tuples swiftui builder
1个回答
0
投票

好吧,也许它不是很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")
            ]
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.