在SwiftUI中的同级之间共享父级的状态

时间:2020-02-22 10:24:55

标签: swift swiftui

我希望有一个ScrollView,其中包含页面,下面带有导航按钮,如图here所示。

我有以下看法。

PageNav(titles: Array<String>, views: Array<AnyView>)
PageNavTop(views: Array<AnyView>)
PageNavBottom(titles: Array<String>)
PageNavButton(title: String, action: () -> Void)

假设我有两个页面,则我具有以下View层次结构。

PageNav -> PageNavTop    -> AnyView<page view 1>
                         -> AnyView<page view 2>
        -> PageNavBottom -> PageNavButton(page title 1)
                         -> PageNavButton(page title 2)

PageNavTop在滚动视图上附加了手势,因此我们可以在页面之间滑动,而PageNavBottom则使我们可以使用按钮进行导航。

PageNav应该包含一个@State var,在子视图中我将用作@Binding var。但是,我使用的是自定义的init函数,似乎无法弄清楚如何将状态传递到两个级别的按钮。

1 个答案:

答案 0 :(得分:0)

我知道了,我快到了。

doctorId

注意struct PageNav: View { @State var activeIndex = 0 ... PageNavTop(views: self.views, activeIndex: self.$activeIndex) PageNavBottom(titles: self.titles, activeIndex: self.$activeIndex) ... 中的下划线,这就是我使用self._activeIndex时出错的地方。我首先尝试使用$,但是我当然不能使用该值。

@Binding var activeIndex: Binding<Int>