SwiftUI:从带有导航后退按钮的视图导航到全屏视图



我正在使用NavigationViewNavigationLink为我的游戏制作菜单。我有三种观点:

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除外(都已在MainMenuViewNavigationView。

要解决此问题,请将CustomGameSettingsView中的NavigationView替换为其他容器,然后一切都会正常工作。此外,移除所有onAppear{}

struct CustomGameSettingsView: View {
var body: some View {
VStack { //replace NavigationView with something else
NavigationLink(destination: MyGameView()) {
Text("Play Game!")
}
}
}
}

最新更新