我正在使用NavigationView
和NavigationLink
为我的游戏制作菜单。我有三种观点:
struct MainMenuView: View {
var body: some View {
NavigationView {
// relevant stuff
NavigationLink(destination: CustomGameSettingsView()) {
Text("Custom Game")
}
}
}
}
struct CustomGameSettingsView: View {
var body: some View {
NavigationView {
// ui to change game settings and stuff
NavigationLink(destination: MyGameView(customSettings)) {
Text("Play Game!")
}
}
}
}
注意,CustomGameSettingsView
显示navigationBarBackButton
struct MyGameView: View {
var body: some View {
myGameViews {
// stuff
}
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
.navigationBarTitle(Text("myGame"))
.edgesIgnoringSafeArea([.top, .bottom])
// these are the things I have tried to get rid of the navigationBackButton
}
.onAppear() {
self.navigationBarBackButtonHidden(true)
} // another thing I tried
}
当我从MainMenuView
导航到CustomGameSettingsView
时,我获得了一个navigationBarBackButton
,当我导航到MyGameView
时,它会一直伴随着我。我该如何在最终导航中消除它?我想要设置菜单上的后退按钮,但我希望我的游戏是全屏的。在这种情况下,NavigationView
是错误的工具吗?
提前谢谢。
这里的问题是在CustomGameSettingsView
中使用另一个NavigationView{}
。您不必使用另一个NavigationView,因为您的所有视图(MainMenuView除外(都已在MainMenuView
的NavigationView。
要解决此问题,请将CustomGameSettingsView
中的NavigationView替换为其他容器,然后一切都会正常工作。此外,移除所有onAppear{}
。
struct CustomGameSettingsView: View {
var body: some View {
VStack { //replace NavigationView with something else
NavigationLink(destination: MyGameView()) {
Text("Play Game!")
}
}
}
}