如何解决UIHostingController 是否必须在视图控制器层次结构中?
我想在基于 UIKit 的 UI 中嵌入一些 SwiftUI,不幸的是 Apple 不提供 UIHostingView
,仅提供 UIHostingController
。我可以或多或少地忽略该控制器而只使用它的视图,还是我真的需要将它添加为子视图控制器?如果我不这样做会怎样?
问题是在某些情况下很难找到父视图控制器。 UIView
本身对视图控制器一无所知,因此我必须想出自己的方法来跟踪哪个是“当前”视图控制器。除非确实有必要,否则我宁愿不这样做。
到目前为止,在我的实验中,它在不添加 UIHostingController
的情况下运行良好。设备旋转得到适当处理,SwiftUI 的暗模式覆盖 (.colorScheme()
) 甚至通过嵌入起作用。
解决方法
使用 UIHostingController(rootView:)
,您只需传入 SwiftUI View
。
您可以通过以下方式将其视为 UIView
:
let myView = UIHostingController(rootView: Text("Hello world!")).view
然后将其添加为子视图例如:
let parent = UIView()
parent.addSubview(myView)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。