ios - PresentationMode.wrappedValue.dismiss() 的完成处理程序
问题描述
我目前通过执行以下操作来消除视图:
struct DestinationView: View {
@Environment(\.presentationMode) private var presentationMode
var onDismiss: () -> Void
var body: some View {
Button("Dismiss") {
presentationMode.wrappedValue.dismiss()
onDismiss()
}
}
}
一旦视图被关闭,我通过调用onDismiss
触发父视图中的操作来通知父视图。
但是,我的动作触发得太早了,因为在调用时onDismiss
,这个视图还没有完成关闭,因此我在父视图中看到了与比赛条件相关的问题。
有没有.dismiss(animated:completion:)
我可以利用的等价物?
PS 额外的上下文:
我从一个UIViewControllerRepresentable
's coordinator 解散。
解决方案
您应该延迟调用它以完成动画,例如
Button("Dismiss") {
presentationMode.wrappedValue.dismiss()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
onDismiss()
}
}
推荐阅读
- javascript - 移除使用 bind(this) 添加的事件监听器
- c# - 验证动态对象中的属性
- ffmpeg - FFMPEG:如何在 centos 上启用 libvorbis 和 libvpx
- azureservicebus - 加快发送消息
- time-complexity - max char 子序列的时间复杂度
- ios - 分发时手动集成框架失败
- sql - Hibernate 在查询实体的子类型字段时生成 IN 运算符;使用条件 API 时导致正确查询生成问题
- linux - Windows sublinux - 获取调用 linux 的 Windows 路径
- java - 从串口读取会拆分字符串
- javascript - 如何修复 .js 文件 url 重定向到双 WWW?