ios - 如何从父 View 中关闭 SwiftUI NavigationView

标签 ios swift swiftui

通常,要在 SwiftUI NavigationView 中实现“自定义关闭按钮”,我会使用 @Environment(\.dismiss) private var Dismiss,然后调用 dismiss() code> 关闭 View 。

但是,假设我想从 NavigationView 的父级中消除 NavigationLink

struct SwiftUIView: View {
    var body: some View {
        HStack {
            Button(action: {
                // dismiss view
            }) {
                Text("Dismiss View")
            } // assume this button is always visible
            NavigationView {
                Text("This is the NavigationView")
                NavigationLink {
                    Text("This is the view I want to exit")
                } label: {
                    Text("Go to view I want to exit")
                }
            }
        }
    }
}

如何通过单击父 View 中的关闭 View 按钮来关闭显示这是我要退出的 View 的 View ?

最佳答案

解决方案如下:

struct SwiftUIView: View {
    @State var isPresent = true
    @State var isDismissed: Bool = false
    
    var body: some View {
        HStack {
            Button(action: {
                isDismissed = true
            }) {
                Text("Dismiss View")
            } // assume this button is always visible
            
            NavigationView {
                VStack {
                    Text("This is the NavigationView")
                    NavigationLink {
                        ViewToDismiss(dismissView: $isDismissed)
                    } label: {
                        Text("Go to view I want to exit")
                    }
                }
            }
            
        }
    }
}

struct ViewToDismiss: View {
    @Environment(\.dismiss) private var dismiss
    @Binding var dismissView: Bool
    var body: some View {
        Text("This is the view I want to exit")
            .onChange(of: dismissView,
                      perform:
                        ( { newValue in
                dismiss()
            }))
    }
}

关于ios - 如何从父 View 中关闭 SwiftUI NavigationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73133137/

相关文章:

swiftui - 打开通知时在 WKWebView 中加载 url

ios - 如何让 Xcode 5 在 Jenkins slave 上运行 iOS 单元测试?

ios - 使用自定义类以编程方式创建 UIView (Swift 4)

iphone - 是否可以从 url 下载低分辨率图像?

swift - 如何在 swift 中向字典添加新键?

ios - Swift 编译器警告 : Result of call to 'save(defaults:)' is unused

SwiftUI - 禁用 NavigationView 后退按钮菜单

SwiftUI - 列表中的自定义滑动操作

ios - 如何在 iOS 项目中旋转没有任何 subview 的 View ?

iOS:核心数据和磁盘空间