Ios 选项卡视图选择重置为图纸显示的第一个选项卡 更新:
感谢Harshil&Sumit指出我太笨了,以至于没有意识到我使用的是Ios 选项卡视图选择重置为图纸显示的第一个选项卡 更新:,ios,swift,swiftui,tabview,Ios,Swift,Swiftui,Tabview,感谢Harshil&Sumit指出我太笨了,以至于没有意识到我使用的是id(),而不是tag()。如果你能从这个问题中学到什么,那就是: 当你独自做一个项目时,你往往会失明。你看不到自己的错误。做代码审查。请朋友和同事检查一下。这是个好主意 原始问题: 在我的SwiftUI项目中,我使用带有$selection绑定的选项卡视图,以便能够以编程方式切换选项卡 问题在于:例如,当我在选项卡视图中包含的第二个视图上显示图纸时,选择将重置为第一个选项卡 对我来说,这似乎是一个SwiftUI错误——但是否
id()
,而不是tag()
。如果你能从这个问题中学到什么,那就是:
当你独自做一个项目时,你往往会失明。你看不到自己的错误。做代码审查。请朋友和同事检查一下。这是个好主意
原始问题:
在我的SwiftUI项目中,我使用带有$selection
绑定的选项卡视图
,以便能够以编程方式切换选项卡
问题在于:例如,当我在选项卡视图
中包含的第二个视图上显示图纸时,选择将重置为第一个选项卡
对我来说,这似乎是一个SwiftUI错误——但是否有解决方法
下面是一个演示该行为的工作示例。(使用Xcode 12.4测试)
如何测试:转到第二个选项卡,点击按钮“2”,您将看到返回到第一个选项卡。一旦从选项卡视图中删除选择
属性,这种情况就不再发生
干杯
Orlando不使用id.id(TabPosition.one)像这样分配标签.tag(TabPosition.one)像这样使用.tag()
:
struct ContentView: View {
@State private var selection = 1
var body: some View {
TabView(selection: $selection) {
One()
.tabItem { Label("One", systemImage: "1.circle") }
.tag(1)
Two()
.tabItem { Label("Two", systemImage: "2.circle") }
.tag(2)
Three()
.tabItem { Label("Three", systemImage: "3.circle") }
.tag(3)
}
}
}
天哪,这真是太蠢了。TFW您意识到您一直认为自己会使用
标记
,您需要这样的答案才能看出您错了。