【发布时间】:2020-12-01 18:27:31
【问题描述】:
我有一个带有导航视图的 TabView。
struct ContentView: View {
var body: some View {
TabView {
NavigationView {
NavigationLink("Link to my first Navigation Level", destination: MyFirstView())
}
.tabItem {
Image(systemName: "house")
Text("Home")
}.tag(0)
NavigationView {
Text("Second Nav Page")
}
.tabItem {
Image(systemName: "gear")
Text("Settings")
}.tag(1)
}
}
}
struct MyFirstView: View {
@State var selectedTag: String?
var body: some View {
VStack {
Text("My First View")
NavigationLink("(Working) Link to my second Navigation Level", destination: MySecondView())
Text("But the Button in the Navigation Bar doesn't work")
}
.navigationBarTitle("My First View", displayMode: .inline)
.navigationBarItems(
leading: HStack {
NavigationLink(destination: MySecondView(), tag: "xx", selection: $selectedTag ){
Button(action: {
print("Settings button pressed...")
self.selectedTag = "xx"
}) {
Image(systemName: "gearshape.2.fill").imageScale(.large)
}
}
}
)
}
}
struct MySecondView: View {
var body: some View {
Text("My Second View")
}
}
现在我有一个超级奇怪的行为。如果我单击“链接到我的第一个导航级别”,然后单击“(工作)链接到我的第二个导航级别”,则旅程有效。如果我在第二个导航级别中单击“返回”,它会返回到第一个导航级别。
问题:
当我单击第一个导航级别的导航栏中的齿轮符号时,它会从嵌套导航中逃脱并将其设置为顶层。结果是,当我单击“返回”时,它会将我从第二个导航级别带回到最根屏幕,但我的预期行为是它应该返回到第一个导航级别。
任何想法我做错了什么?我正在使用 Xcode 12.2 beta 3 和 iOS 14.2(不确定它是否是 beta 错误)。
非常感谢!
【问题讨论】:
-
不要在导航栏中使用 NavigationLink,请参见 stackoverflow.com/a/59776373/12299030。
标签: swiftui navigationview tabview swiftui-navigationlink