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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...