我正在研究本机iOS应用程序(演示)。和新的反应本机。我想了解RCTRootView,即它是如何工作的。我有一个疑问,即在app delegate中默认创建了根视图。如果我在view controller中添加了另一个根视图,会发生什么?它设置了哪一个将成为根视图。有人可以帮我吗?如果使用新的模块名称创建它,会发生什么?

提前致谢...

最佳答案

创建新的Xcode项目时,它将指定一个故事板(Main.storyboard)作为“主界面”。您可以在目标的“常规”设置标签中看到此内容。在该情节提要中,您将找到“情节提要”入口点,即“视图控制器”左侧的箭头。这表明视图控制器(默认情况下为类ViewController)将成为您的根视图控制器。如果删除“主界面”设置(以使其为空),则不会自动具有根视图控制器;您将必须手动进行设置。

看一下可用于ReactNative的示例。您将看到一般的方法是在application: didFinishLaunchingWithOptions:中实例化UIWindow,然后是普通的UIViewController。在此之前或之后的某个时刻,RCTRootView被实例化(使用RCTBridgeBundleURL: moduleName:...初始化程序)。这是UIView的子类,因此还没有UIViewController。因此,将其设置为前面提到的普通UIViewController的视图,然后将其设置为rootViewControllerUIWindow,将其设置为“关键且可见”,然后我们就可以了。

我现在只用ReactNative工作了两天,但是反复看到上面的模式,今天我发现自己正在构建类似RCTRootViewController的东西来封装它,并在RCTRootViewloadView方法中传递UIViewController 。视图控制器可以具有与RCTRootView匹配的初始化程序。

09-11 11:19