我正在研究本机iOS应用程序(演示)。和新的反应本机。我想了解RCTRootView
,即它是如何工作的。我有一个疑问,即在app delegate
中默认创建了根视图。如果我在view controller
中添加了另一个根视图,会发生什么?它设置了哪一个将成为根视图。有人可以帮我吗?如果使用新的模块名称创建它,会发生什么?
提前致谢...
最佳答案
创建新的Xcode项目时,它将指定一个故事板(Main.storyboard)作为“主界面”。您可以在目标的“常规”设置标签中看到此内容。在该情节提要中,您将找到“情节提要”入口点,即“视图控制器”左侧的箭头。这表明视图控制器(默认情况下为类ViewController
)将成为您的根视图控制器。如果删除“主界面”设置(以使其为空),则不会自动具有根视图控制器;您将必须手动进行设置。
看一下可用于ReactNative的示例。您将看到一般的方法是在application: didFinishLaunchingWithOptions:
中实例化UIWindow
,然后是普通的UIViewController
。在此之前或之后的某个时刻,RCTRootView
被实例化(使用RCTBridge
或BundleURL: moduleName:...
初始化程序)。这是UIView
的子类,因此还没有UIViewController
。因此,将其设置为前面提到的普通UIViewController
的视图,然后将其设置为rootViewController
的UIWindow
,将其设置为“关键且可见”,然后我们就可以了。
我现在只用ReactNative工作了两天,但是反复看到上面的模式,今天我发现自己正在构建类似RCTRootViewController
的东西来封装它,并在RCTRootView
的loadView
方法中传递UIViewController
。视图控制器可以具有与RCTRootView
匹配的初始化程序。