如何知道NavigationView在SwiftUI中弹出?

问题描述 投票:0回答:2

当用户点击后退按钮时,我们可以获取事件并执行某些操作吗?

我已经尝试过使用onDisappear作为视图,但是不希望出现孩子消失和父母出现的顺序。因此,我正在寻找挂钩事件的方法。

ios swiftui navigationview
2个回答
0
投票

我认为您可以使用isActive并监听绑定中的更改,我知道绑定没有didSet,但可以使用此扩展名添加它]]

extension Binding {
    func didSet(execute: @escaping (Value) ->Void) -> Binding {
        return Binding(
            get: {
                return self.wrappedValue
            },
            set: {
                execute($0)
                self.wrappedValue = $0
            }
        )
    }
}

然后您可以添加状态以监视视图的状态

struct ContentView: View {

    @State isPresented: Bool = false

    var body: some View {
        NavigationView {
             NavigationLink(Text("Follow to a Text"), destination: Text("detail view"), isPresented: $isPresented.didSet{ if !self.isPresented { print("Back Pressed") } })
        }

}

目前,我不知道没有自定义按钮的任何其他方式可以完成您想要的事情


0
投票

您可以使用修饰符onDisappear,我不知道这是否在所有情况下都能解决您的问题,但这是一种简单的方法。

© www.soinside.com 2019 - 2024. All rights reserved.