SwiftUI 视图 onAppear 事件调用回扫手势动作

Posted

技术标签:

【中文标题】SwiftUI 视图 onAppear 事件调用回扫手势动作【英文标题】:SwiftUI view's onAppear event call on swipe back gesture action 【发布时间】:2021-06-30 17:44:10 【问题描述】:

您可能知道,SwiftUI 的 .onAppear 在视图出现时被调用。

在我的应用程序中,我实现了从子视图到父视图的向后滑动手势。但是,当执行向后滑动手势时,父母的 onAppear 已经部分可见时会调用它。

所以我的问题是:我应该怎么做才能确保在父视图全部(而不是部分)出现时调用 onAppear

【问题讨论】:

【参考方案1】:

您可以在isActive Binding 中检查 NavigationLink 的状态。这是一个使用 ProxyBinding 的示例,您可以在其中检测到 setter 中的滑动。

struct ContentView: View 
    @State var isActive: Bool = false

    var body: some View 
        NavigationView 
            NavigationLink(
                destination: Text("Destination"),
                isActive: Binding<Bool>(
                    get: 
                        isActive
                    , set: 
                        isActive = $0
                        // Here you can check the status, if it is false it is fully slided back. 
                        print($0)
                    ),
                label: 
                    Text("Navigate")
                )
        
        .onAppear 
            print("appear")
        
    

【讨论】:

以上是关于SwiftUI 视图 onAppear 事件调用回扫手势动作的主要内容,如果未能解决你的问题,请参考以下文章

视图模型中的 Firestore 方法未在 SwiftUI onAppear 方法中调用

iOS14.2 SwiftUI PageTabView 会多次调用 ChildView onAppear 方法

SwiftUI onAppear 被调用两次

SwiftUI解决List子项无法正确触发onAppear和onDisappear事件的问题

SwiftUI解决List子项无法正确触发onAppear和onDisappear事件的问题

如何响应 SwiftUI 中的视图生命周期事件?