在SwiftUI中的兄弟姐妹之间共享来自父级的状态

在SwiftUI中的兄弟姐妹之间共享来自父级的状态,swift,swiftui,Swift,Swiftui,我希望有一个滚动视图,其中包含页面和下面的导航按钮,如图所示 我有以下看法 PageNav(titles: Array<String>, views: Array<AnyView>) PageNavTop(views: Array<AnyView>) PageNavBottom(titles: Array<String>) PageNavButton(title: String, action: () -> Void) 其中,PageNav

我希望有一个
滚动视图
,其中包含页面和下面的导航按钮,如图所示

我有以下看法

PageNav(titles: Array<String>, views: Array<AnyView>)
PageNavTop(views: Array<AnyView>)
PageNavBottom(titles: Array<String>)
PageNavButton(title: String, action: () -> Void)
其中,
PageNavTop
将手势附加到滚动视图,以便我们可以在页面之间滑动,
PageNavBottom
允许我们使用按钮导航


PageNav应该保存一个
@State var
,我将在子视图中将其用作
@Binding var
。然而,我使用的是一个自定义的
init
函数,我似乎不知道如何将状态传递到按钮的两个级别。

我知道了,我就快到了

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

struct PageNavBottom: View {
    @Binding var activeIndex: Int
    ...
        PageNavButton(
            title: title,
            action: { self.activeIndex = index }
        )
    ...
    init(titles: [String], activeIndex: Binding<Int>) {
        self._activeIndex = activeIndex
struct PageNavBottom:视图{
@绑定变量activeIndex:Int
...
页面导航按钮(
标题:标题,,
操作:{self.activeIndex=index}
)
...
初始化(标题:[字符串],活动索引:绑定){
self.\u activeIndex=activeIndex

我明白了,我就快到了

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

struct PageNavBottom: View {
    @Binding var activeIndex: Int
    ...
        PageNavButton(
            title: title,
            action: { self.activeIndex = index }
        )
    ...
    init(titles: [String], activeIndex: Binding<Int>) {
        self._activeIndex = activeIndex
struct PageNavBottom:视图{
@绑定变量activeIndex:Int
...
页面导航按钮(
标题:标题,,
操作:{self.activeIndex=index}
)
...
初始化(标题:[字符串],活动索引:绑定){
self.\u activeIndex=activeIndex