在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