【问题标题】:SwiftUI change view from first screen to tabview screenSwiftUI 将视图从第一个屏幕更改为 tabview 屏幕
【发布时间】:2021-04-03 15:47:33
【问题描述】:
一旦用户点击“开始”,我想更改视图,但由于在我的第一个视图中有导航视图,它在我的下一个屏幕上显示了我不想要的后退按钮。请参阅下面的图片。
第一个视图的代码如下:
导入 SwiftUI
结构内容视图:查看{
var body: some View {
NavigationView {
VStack {
Spacer()
Text("LifePath")
.font(.system(size: 48, weight: .semibold))
.padding(.bottom)
Spacer()
NavigationLink(destination: ViewChanger()) {
Text("Get Started")
.font(.headline)
.navigationBarBackButtonHidden(true)
}
}
.padding()
}
}
}
back button showing on screen 2
First view
【问题讨论】:
标签:
ios
swift
swiftui
swiftui-navigationlink
swiftui-navigationview
【解决方案1】:
更改您的 navigationBackButtonHidden 修饰符的位置,以便它实际修改您要访问的视图(而不是 NavigationLink 标签):
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
Spacer()
Text("LifePath")
.font(.system(size: 48, weight: .semibold))
.padding(.bottom)
Spacer()
NavigationLink(destination: ViewChanger()
.navigationBarBackButtonHidden(true) // <-- Here
) {
Text("Get Started")
.font(.headline)
}
}
.padding()
}
}
}
如果您不仅希望后退按钮消失,还希望整个标题栏消失,您可以使用.navigationBarHidden(true) 修饰符。
另外,如果您在 iPad 上运行此程序,您可能希望将 .navigationViewStyle(StackNavigationViewStyle()) 添加到您的 NavigationView 外部
【解决方案2】:
如果您使用 NavigationLink(在 NavigationView 中),则会推送视图。如果要替换视图,可以使用if 语句来完成。
例如,可以这样实现:
struct ContentView: View {
@State var showSecondView: Bool = false
var body: some View {
if !showSecondView {
NavigationView {
VStack {
Spacer()
Text("LifePath")
.font(.system(size: 48, weight: .semibold))
.padding(.bottom)
Spacer()
Button(action: { showSecondView = true }) {
Text("Get Started")
.font(.headline)
}
}
.padding()
} else {
TabView {
// ...
}
}
}
}