我正在尝试在
popoverTip
被解除时运行一些代码,但我还没有找到方法来做到这一点。
我尝试了
popoverTip(tip).onDisappear { print(“tip dismissed”) }
,但没有成功。
可以吗?
在 SwiftUI 中,直接使用弹出窗口本身的 .onDisappear 修饰符处理弹出窗口的关闭可能会很棘手,因为包含弹出窗口的视图的生命周期不一定与弹出窗口的可见性相关。但是,您可以通过结合使用状态管理和视图修饰符来实现所需的行为。
这是在弹出窗口关闭时运行一些代码的示例方法:
逐步解决方案:
这是一个示例实现:
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()
}
}