如何在函数中传入 SwiftUI 视图?
Posted
技术标签:
【中文标题】如何在函数中传入 SwiftUI 视图?【英文标题】:How can I pass in a SwiftUI View in a function? 【发布时间】:2022-01-09 22:26:00 【问题描述】:我正在开发的应用程序主要是在 UIKit 中。我们开始转向 SwiftUI 来处理更小的组件,我想编写一个简洁的小扩展,它将接收 SwiftUI 视图并返回 UIKit 视图。这是我目前拥有的代码:
static func getUIView(for swiftUIView: View) -> UIView
let hostingController = UIHostingController(rootView: swiftUIView)
return hostingController.view
但是这会引发错误
Protocol 'View' 只能用作通用约束,因为它具有 Self 或关联的类型要求
有人可以向我解释为什么这是一个问题以及实现此目标的正确方法是什么?
【问题讨论】:
【参考方案1】:您只需将您的方法设为泛型并将泛型类型限制为View
。
static func getUIView<V: View>(for swiftUIView: V) -> UIView
let hostingController = UIHostingController(rootView: swiftUIView)
return hostingController.view
但是,我建议在 View
上创建一个计算属性,该属性从视图本身返回 UIView
。
extension View
var uiView: UIView
UIHostingController(rootView: self).view
然后在你想转换为UIView
的View
上调用它:
Text("Label").uiView
【讨论】:
美丽。谢谢!以上是关于如何在函数中传入 SwiftUI 视图?的主要内容,如果未能解决你的问题,请参考以下文章