如何在iOS 14、SwiftUI 2中以编程方式更改PageTabView?

如何在iOS 14、SwiftUI 2中以编程方式更改PageTabView?,ios,swiftui,ios14,xcode12,Ios,Swiftui,Ios14,Xcode12,我正在探索Xcode 12和SwiftUI 2.0中的新事物 我在Xcode 12、iOS 14和Swift UI 2中创建了一个带有TabView和PageTabViewStyle的pageview登录屏幕。我想添加下一步按钮时,点击它,页面应该移动到第二个视图。这里文本(“你好”) struct OnBoardingView: View { var body: some View { TabView { Text("Hi")

我正在探索Xcode 12和SwiftUI 2.0中的新事物

我在Xcode 12、iOS 14和Swift UI 2中创建了一个带有TabView和PageTabViewStyle的pageview登录屏幕。我想添加下一步按钮时,点击它,页面应该移动到第二个视图。这里文本(“你好”)

struct OnBoardingView: View {
    var body: some View {
        TabView {
            Text("Hi")
            Text("Hello")
            Text("Welcome")
        }
        .tabViewStyle(PageTabViewStyle())
        .indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
    }
}

下面是解决方案的演示。使用Xcode 12/iOS 14进行测试

struct OnBoardingView:View{
@状态私有变量selectedPage=0
var body:一些观点{
VStack{
HStack{
按钮(“”{如果选择页面<2{
带动画{selectedPage+=1}
} }
}
选项卡视图(选择:$selectedPage){
文本(“Hi”)。标记(0)
文本(“你好”)。标记(1)
文本(“欢迎”)。标签(2)
}
.tabViewStyle(PageTabViewStyle())
.indexViewStyle(PageIndexViewStyle(背景显示模式:。始终))
}
}
}

将按钮放在一个单独的结构视图中的一个页面内如何?@MatiasMasso您需要一个
绑定
如中所示
struct OnBoardingView: View {
    @State private var selectedPage = 0
    var body: some View {
        VStack {
            HStack {
                Button("<") { if selectedPage > 0 {
                    withAnimation { selectedPage -= 1 }
                } }
                Spacer().frame(width: 40)
                Button(">") { if selectedPage < 2 {
                    withAnimation { selectedPage += 1 }
                } }
            }
            TabView(selection: $selectedPage) {
                Text("Hi").tag(0)
                Text("Hello").tag(1)
                Text("Welcome").tag(2)
            }
            .tabViewStyle(PageTabViewStyle())
            .indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
        }
    }
}