借助SwiftUI的NavigationView,我们从代码构造的简单性中受益。但是,没有公开,至少在这些早期阶段是重写。此外,由于对视图生命周期管理的关注减少,因此很难根据视图状态找出调用什么内容以及何时调用某些内容。
当用户选择备份NavigationView层次结构时(例如,单击NavigationView提供的后退按钮),我想运行一些代码。
我已经尝试过onDisappear(){}以及其他变种,但我无法使其正常工作。好像没有被调用。 onAppear(){}确实可以正常工作,所以我很困惑。
任何帮助都将得到超级认可!
答案 0 :(得分: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()
}
}