我正在使用 NavigationLink 在视图之间导航,但它在 SwiftUI 的单个视图中不起作用
Posted
技术标签:
【中文标题】我正在使用 NavigationLink 在视图之间导航,但它在 SwiftUI 的单个视图中不起作用【英文标题】:I am using NavigationLink to navigate between views and it doesn't work in a single view in SwiftUI 【发布时间】:2020-03-19 17:14:44 【问题描述】:当我想退出我的应用程序时,我想使用 NavigationLink 显示具有“登录”/“创建帐户”页面的初始视图。我在应用程序的其他地方使用了完全相同的方法,它在那里工作,但在这里它没有。这是我的代码:
import SwiftUI
var signOut = false
struct SignOut: View
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
@State private var curent: Int? = nil
var body: some View
VStack
NavigationLink(destination: ContentView(), tag: 1, selection: $curent)
EmptyView()
.buttonStyle(PlainButtonStyle())
Button(action:
let defaults = UserDefaults.standard
defaults.set(false, forKey: "isLoggedIn")
defaults.set("", forKey: "token")
if contentViewVerify
print("content true")
self.presentationMode.wrappedValue.dismiss()
else if contentViewVerify == false
print("content false")
self.curent = 1 // if contentViewVerify is false I want to use the NavigationLink method which activates once curent = 1
)
Text("SignOut")
.navigationBarTitle("covid")
.navigationBarBackButtonHidden(true)
.onAppear(perform:
signOut = true
)
struct SignOut_Previews: PreviewProvider
static var previews: some View
SignOut()
提前谢谢你!
【问题讨论】:
您的SignOut
视图是否在NavigationView
堆栈中?
现在不行了,但是我试着把它放在 NavigationView 中还是不行。
【参考方案1】:
NavigationLink
仅在 NavigationView
中工作,所以它应该是这样的
struct SignOut_Previews: PreviewProvider
static var previews: some View
NavigationView // for testing in preview
SignOut()
注意:contentViewVerify
更改在呈现的代码中不存在,请确保它确实设置为 false
。
【讨论】:
我试图这样做,但它不起作用。或者也许我没有把它放在正确的地方。你能帮我把它从上面放到我的代码中吗? contentViewVerify 设置为 false。当我按下按钮时,“content false”出现在我的 concole 中,这意味着它进入了“else”语句,所以它是错误的,因为我有那个 print(“content false”) 而我在其他任何地方都没有那个在我的代码中。 我尝试在预览中对其进行测试,但由于某种原因预览无法正常工作,但是当我在模拟器上运行它时,它运行正常,但 NavigationLink 问题仍然存在。PreviewProvider
在模拟器上不工作,它只用于预览,所以对于模拟器,对于真实设备,您必须以相同的方式放置在 root NavigationView
中的某个位置。
当您说“in root”时,您指的是根视图?以上是关于我正在使用 NavigationLink 在视图之间导航,但它在 SwiftUI 的单个视图中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI NavigationLink 如何到达另一个 SwiftUI 页面?
需要帮助使 NavigationLink 在 SwiftUI 中工作
从模态视图使用 NavigationLink 的 SwiftUI 推送视图