SwiftUI:TabView 只能在没有绑定(bind)的情况下正常工作(点不会改变)

标签 swiftui tabview

这里有一个奇怪的问题 - 要么是错误,要么是我遗漏了一些简单的东西。

我正在使用 PageTabViewStyle() 创建一个 TabView{}。它工作完美,请看下面并注意底部的点(表示选择了哪个页面的点 - 请忽略奇怪的故障,这只是由于 gif 动画压缩)

enter image description here

但是,只要我添加一个绑定(bind)变量来跟踪所选内容,指示器点就不再更改(而且所选页面也不会被跟踪)。

enter image description here

工作版本代码:

import SwiftUI

struct ContentView: View {
    
    var body: some View {
        TabView() {
       
            SomePage(text:"page 1")
            SomePage(text:"page 2")
            SomePage(text:"page 3")
          
            
        }.tabViewStyle(PageTabViewStyle())
        .background(Color.gray)

    }
}

点不更新的代码:

import SwiftUI

struct ContentView: View {
    
    @State var selected = 0
    
    var body: some View {
        TabView(selection: $selected) {
       
            SomePage(text:"page 1")
            SomePage(text:"page 2")
            SomePage(text:"page 3")
          
            
        }.tabViewStyle(PageTabViewStyle())
        .background(Color.gray)

    }
}

不知道为什么会这样。有人能帮忙吗?谢谢!

最佳答案

你只需要在每个页面添加一个.tag(),像这样:

struct TabViewTest: View {
    
    @State var selected = 0

    var body: some View {
        TabView(selection: $selected) {
            Color.red.edgesIgnoringSafeArea(.all)
                .tag(0)
            
            Color.blue.edgesIgnoringSafeArea(.all)
                .tag(1)

            Color.orange.edgesIgnoringSafeArea(.all)
                .tag(2)
        }
        .tabViewStyle(PageTabViewStyle())
    }
}

关于SwiftUI:TabView 只能在没有绑定(bind)的情况下正常工作(点不会改变),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65828197/

相关文章:

canvas - SwiftUI 预览 SKProduct 和介绍性价格

react-native - react native TabView 滑动

Primefaces p :confirmDialog inside tabView

android - setOnTouchListener 不适用于 android fragment

android - 如何在运行时更改 Tabview。?

SwiftUI:仅当输入不为空时才启用保存按钮

swift - SKView 警告日志

ios - SwiftUI:如何动态设置自定义 View 大小

ios - SwiftUI:如何在 SwiftUI 中实现单选按钮

jsf - primefaces tabView activeIndex 问题