3

使用 SwiftUI 的 NavigationView,我们可以从代码构造的简单性中受益。然而,没有暴露,至少在这些早期阶段是覆盖。此外,减少对视图生命周期管理的关注使得很难根据视图的状态找出调用什么以及何时调用某些东西。

当用户选择返回 NavigationView 层次结构(即单击 NavigationView 提供的后退按钮)时,我想运行一些代码。

我已经尝试过 onDisappear() {} 并且它是其他变体,我无法让它工作。它似乎没有被调用。onAppear() {} 确实有效,所以我很难过。

任何帮助将不胜感激!

4

1 回答 1

1

我很确定在这个阶段,没有可以覆盖的方法来捕获导航视图的“返回”操作。

但是,我确实发现我可以隐藏 NavigationView 的后退按钮并自己添加一个自定义按钮,我可以在解雇孩子之前调用代码。

import SwiftUI

struct SecondView: View {
    var body: some View {


        Text("Second View")
            .navigationBarBackButtonHidden(true)
            .navigationBarItems(leading: NavigationViewCustomBack())
    }


}


==========================

import SwiftUI

struct NavigationViewCustomBack: View {
    var body: some View {
        HStack{
                Image(systemName: "chevron.left").foregroundColor(.blue).font(Font.title.weight(.medium))
                Text("Home").padding(.leading, -5)
            }
    }
}

struct NavigationViewCustomBack_Previews: PreviewProvider {
    static var previews: some View {
        NavigationViewCustomBack()
    }
}
于 2019-09-14T14:02:56.940 回答