我在使用 XCode 13.2 的项目中有以下简化代码。预期的功能是有 2 个选项卡(Tab1
和Tab2
),用户可以点击屏幕Tab2
以将背景从红色切换为绿色。
但是,当Tab2
单击 时,屏幕会显示选项卡 1,而不是Tab2
更改后的颜色。我想知道为什么应用程序会Tab1
在Tab2
被点击时进入。
没有使用户转到的 NavigationLinks 或操作Tab1
。我唯一的想法是单击时应用程序可能正在重建Tab2
,这就是为什么它会返回到第一个选项卡?如果是这样,有什么好的解决方法吗?
注意:颜色仍然会改变Tab2
,但在应用程序切换到之前不会Tab1
。
struct ContentView: View {
var body: some View {
TabView {
Tab1()
.tabItem {
Text("Tab 1")
}
Tab2()
.tabItem {
Text("Tab 2")
}
}
}
}
struct Tab1: View {
var body: some View {
Text("Tab 1")
}
}
struct Tab2: View {
@State var isRed: Bool = false
var body: some View {
if !isRed {
Color.green
.onTapGesture {
isRed = true
}
} else {
Color.red
.onTapGesture {
isRed = false
}
}
}
}