swift - 处理来自 UIKit 的 SwiftUI 视图回调
问题描述
我在 UIViewController 中有一个 SwiftUI 视图。它植根于 UIHostingController(通过情节提要嵌入到视图控制器内的 UIContainerView 中)。
现在,这个 SwiftUI 视图有一个我想从 UIViewController 内部处理的按钮。
我尝试为 SwiftUI 视图提供一个函数(名为dismiss),如下所示:
import SwiftUI
struct SkipView: View {
var dismiss: (() -> Void)?
var body: some View {
HStack {
Button(action: {
let _ = self.dismiss!
}) {
Text("Skip")
}
}
}
}
然后在 UIViewController 中,它看起来像这样:
@IBSegueAction func addSkipView(_ coder: NSCoder) -> UIViewController? {
var skipView = SkipView(entry: self.entry)
skipView.dismiss = {
self.skipContainerView.isHidden = true
print("Why isn't this getting called?")
}
return UIHostingController(coder: coder, rootView: skipView)
}
但是,我的视图控制器中没有调用skipView.dismiss回调。
关于如何正确地将 SwiftUI 视图中的按钮操作传达给 UIKit 视图控制器的任何想法?
解决方案
编码:
let _ = self.dismiss!
不打电话self.dismiss
;你没有括号!
你需要做这样的事情:
if let someDismiss = self.dismiss {
someDismiss()
}
推荐阅读
- python - “teamview”对象没有属性“get_object”
- java - 在 Spring Security 中获取用户角色的最佳方式
- database - oracle 19c sqlplus / as sysdba 询问用户名和密码?
- python - 如何在 Ubuntu 的 python 3.7 中安装模块?
- azure-active-directory - Azure HTTP POST 请求来自 Power BI 的访问令牌
- algorithm - 如何为这个冲突问题创建最佳解决方案?
- python-3.x - 安装应用程序后添加部分字段和注释中的 Odoo 13 错误
- c# - 通过需要 IntPtr 到 WPF 中的窗口的 SDK 捕获相机流(没有空域问题)
- powershell - 调用 Azure Powershell cmdlet 时出现“未在上下文中找到订阅”错误
- arrays - 与在 Julia 中生成 Float 数组相比,将整数数组乘以 Float 会提高还是降低性能?