在 SwiftUI 中,TabView 默认情况下会根据所选的选项更改视图。如果要在不更改视图的情况下更新选项,可以使用 tag(_:selection:)
修饰符并将其与 @State
属性一起使用。以下是一个包含代码示例的解决方法:
import SwiftUI
struct ContentView: View {
@State private var selectedTab: Int = 0
var body: some View {
VStack {
TabView(selection: $selectedTab) {
Text("Tab 1")
.tabItem {
Image(systemName: "1.circle")
Text("Tab 1")
}
.tag(0)
Text("Tab 2")
.tabItem {
Image(systemName: "2.circle")
Text("Tab 2")
}
.tag(1)
Text("Tab 3")
.tabItem {
Image(systemName: "3.circle")
Text("Tab 3")
}
.tag(2)
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
Button("Next Tab") {
selectedTab = (selectedTab + 1) % 3
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在这个示例中,我们使用 @State
属性 selectedTab
来跟踪选定的选项。我们将 TabView
的 selection
参数绑定到 selectedTab
属性上。然后,我们使用 .tag(_:selection:)
修饰符为每个选项分配一个唯一的标识符,并将其与对应的选项绑定。这样,当我们在 Button
中更改 selectedTab
的值时,TabView
会自动更新选定的选项,但不会更改当前显示的视图。
上一篇:不改变时区的日期时间解析