有条件地显示导航视图
Conditionally show Navigation View
既然在视图层级中只能使用一个NavigationView,那么在应用启动时确定要呈现的初始视图的情况如何处理?
@main
struct heartbreaksApp: App {
let token = UserDefaults.standard.value(forKey: "token")
var body: some Scene {
return WindowGroup {
if token != nil {
Campaigns()
} else {
Login()
}
}
}
}
因此,如果令牌为零,我们将转到声明 NavigationView 的登录,当我们登录时,NavigationLink 会将我们带到营销视图。但是,如果令牌不为零,我们将直接转到我们没有导航视图的活动视图,因此无法从那里导航到其他视图。如果我也在活动中声明一个导航视图,我最终会得到两个导致各种破坏的结果,例如 2 个后退按钮,一个指向登录,一个指向活动。我显然做错了...Please see picture
从登录中删除 NavigationView
并将其置于顶层,如
NavigationView { // << here !!
if token != nil {
Campaigns()
} else {
Login()
}
}
既然在视图层级中只能使用一个NavigationView,那么在应用启动时确定要呈现的初始视图的情况如何处理?
@main
struct heartbreaksApp: App {
let token = UserDefaults.standard.value(forKey: "token")
var body: some Scene {
return WindowGroup {
if token != nil {
Campaigns()
} else {
Login()
}
}
}
}
因此,如果令牌为零,我们将转到声明 NavigationView 的登录,当我们登录时,NavigationLink 会将我们带到营销视图。但是,如果令牌不为零,我们将直接转到我们没有导航视图的活动视图,因此无法从那里导航到其他视图。如果我也在活动中声明一个导航视图,我最终会得到两个导致各种破坏的结果,例如 2 个后退按钮,一个指向登录,一个指向活动。我显然做错了...Please see picture
从登录中删除 NavigationView
并将其置于顶层,如
NavigationView { // << here !!
if token != nil {
Campaigns()
} else {
Login()
}
}