当用户点击“后退”按钮时,我们可以获取事件并执行某些操作吗?
我已经尝试过使用onDisappear
进行查看,但是不需要孩子消失和父母出现的顺序。因此,我正在寻找挂钩事件的方法。
答案 0 :(得分: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") } })
}
}
目前,我不知道没有自定义按钮的其他任何方式来做您想做的事
答案 1 :(得分:0)
您可以使用修饰符onDisappear
,我不了解您的确切情况,因为您需要返回的确切事件。
struct ContentView: View {
@State var isPresented: Bool = false
var destination: some View {
Text("Detail")
.onDisappear(perform: {
print("On Disappear")
})
}
var body: some View {
NavigationView {
NavigationLink(destination: destination, isActive: $isPresented) {
Text("Main")
}
}
}
}