Pop 和 Push 的导航在 SwiftUI 中不起作用?

Posted

技术标签:

【中文标题】Pop 和 Push 的导航在 SwiftUI 中不起作用?【英文标题】:Navigation of Pop and Push not working in SwiftUI? 【发布时间】:2020-01-26 08:02:50 【问题描述】:

我有两个屏幕。第一个屏幕有以下代码

NavigationLink(destination: SecondScreen()) 
                    Text("Scan Qr Code")
                

NavigationLink 导航到按预期工作的第二个屏幕。在第二个屏幕中

struct SecondScreen: View 

    @Environment(\.presentationMode) var presentation

    var body: some View
       Button("Done") 
                    self.presentation.wrappedValue.dismiss()
                
   

第二个屏幕中的按钮按预期弹出到第一个屏幕,但是当我回到第一个屏幕并单击NavigationLink时,它不会移动到第二个屏幕。

【问题讨论】:

***.com/questions/58425183/… 的副本?这不是同一个众所周知的错误吗? 【参考方案1】:

这里有一个解决方案。使用第一个屏幕上的按钮而不是导航链接,并使用该按钮弹出一个工作表。我对此进行了测试,它对我有用!

struct ContentView: View 

@State private var showingAddExpense = false

var body: some View 

    NavigationView

        Button(action: 

            self.showingAddExpense = true

        ) 

            Text("Button")

        
            .sheet(isPresented: $showingAddExpense) 
            SecondScreen()
            
    

    


struct SecondScreen: View 

@Environment(\.presentationMode) var presentation

var body: some View

    NavigationView

        Button("Done") 
             self.presentation.wrappedValue.dismiss()
         
    


【讨论】:

它将第二个屏幕显示为一个模式,用户可以在我不想要的顶部滑动时将其关闭

以上是关于Pop 和 Push 的导航在 SwiftUI 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 使用 push(), pop() 和路由进行导航

Push、Segue、Summon、导航以编程方式查看 SwiftUI

ios导航控制器UINavigationController,控制器a跳转(push)到b后,b跳转(push)到c,但c后退(pop)进入a

调用 Navigator Pop 或 Push 时触发 Flutter Stream Builder

如何在 SwiftUI 的标签栏的特定视图中隐藏导航栏?

SwiftUI之NavigationView的基础使用与进阶实践