将 UIViewRepresentable 用于自定义组件不起作用
Posted
技术标签:
【中文标题】将 UIViewRepresentable 用于自定义组件不起作用【英文标题】:Use UIViewRepresentable for custom components not working 【发布时间】:2020-05-26 14:10:34 【问题描述】:我使用 UIKit 在 Swift 中编写了很多组件。我现在想在 SwiftUI 中使用这个自定义组件。我使用 UIViewRepresentable 创建了一个结构:
struct MyIcon: UIViewRepresentable
func makeUIView(context: Context) -> HUIIconView
return HUIIconView()
func updateUIView(_ uiView: UITextView, context: Context)
我的 HUIIconView 是这样定义的:
@IBDesignable @objc public class HUIIconView: UIView
Xcode 给我以下错误:
类型“MyIcon”不符合协议“UIViewRepresentable”
这种方法适用于 Apple 自己的组件,如 UITextView,但不适用于自定义组件。 如何在 SwiftUI 中使用我自己的组件?
【问题讨论】:
【参考方案1】:在这里(使用 Xcode 11.4 测试)
@IBDesignable @objc public class HUIIconView: UIView
struct MyIcon: UIViewRepresentable
func makeUIView(context: Context) -> HUIIconView
return HUIIconView()
func updateUIView(_ uiView: HUIIconView, context: Context)
【讨论】:
谢谢,这个错误误导了我。我只是忘记在 updateUIView() 中用 HUIIconView 替换 UITextView。以上是关于将 UIViewRepresentable 用于自定义组件不起作用的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI MapKit UIViewRepresentable 无法显示警报
带有 UIViewRepresentable 的 SwiftUI 自定义文本字段 ObservableObject 和推送视图的问题
如何找到 SwiftUI UIViewRepresentable 的框架