是否可以添加解雇处理程序

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

我正在尝试在

popoverTip
被解除时运行一些代码,但我还没有找到方法来做到这一点。

我尝试了

popoverTip(tip).onDisappear { print(“tip dismissed”) }
,但没有成功。

可以吗?

swiftui dismiss tipkit
1个回答
0
投票

在 SwiftUI 中,直接使用弹出窗口本身的 .onDisappear 修饰符处理弹出窗口的关闭可能会很棘手,因为包含弹出窗口的视图的生命周期不一定与弹出窗口的可见性相关。但是,您可以通过结合使用状态管理和视图修饰符来实现所需的行为。

这是在弹出窗口关闭时运行一些代码的示例方法:

逐步解决方案:

  • 使用 @State 变量来跟踪弹出窗口的可见性。
  • 使用 onChange 修饰符来检测状态何时发生变化(即 当弹出窗口消失时)。

这是一个示例实现:

import SwiftUI

struct ContentView: View {
    @State private var showPopover = false

    var body: some View {
        VStack {
            Button("Show Popover") {
                showPopover = true
            }
        }
        .popover(isPresented: $showPopover) {
            PopoverContentView()
        }
        .onChange(of: showPopover) { newValue in
            if !newValue {
                // Code to run when popover is dismissed
                print("Popover dismissed")
            }
        }
    }
}

struct PopoverContentView: View {
    var body: some View {
        Text("This is a popover")
            .padding()
    }
}

// MARK: - PREVIEW

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.