ios – 与具有两个UINavigationController的rootViewController共享相同的UIViewController

更新:我已经决定与我的问题走一条不同的路线.
而不是直接使用相同的UIViewController,而是使用两个设置为rootViewController的vanilla UIViewController.在他们的loadView方法中,他们调用[storyboard instantiateViewControllerWithIdentifier:]来获取一个UIViewController,并将其视图设置为控制器的视图.这可能是首选方法,因为我需要设置几个变量和代表.

我有一个UIStoryBoard与UITabBarController作为入口点与两个UINavigationControllers连接.每个共享一个共同的UIViewController作为其根视图控制器.当应用程序启动时,第一个UITabBarItem被选中,视图按预期方式加载.但是,当我选择第二个UITabBarItem时,相同的视图是不可见的.我看到带有黑色背景的UINavigationBar.我使用Storyboard界面做错了事情,还是需要通过每个UINavigationController的方法手动实例化UIViewController – 例如loadView?

解决方法

奇怪的是,这是一个没有其他人问的问题.据我所知,不可能共享rootViewController,我认为是一个错误,因为当您检查故事板上的连接时,您可以看到视图控制器连接到两个导航控制器.我认为这是故事板中的一个缺陷,因为重复的viewController和重新应用所有的连接是非常容易出错的,并使故事板过于复杂.

我看到你的解决方案的问题.像这样的解决方法我有疑问,如果iOS中的当前故事板功能已准备好创建应用程序.我认为故事板有一个概念上的问题,苹果公司需要决定一个故事板上的一个viewController是否代表一个实例,或者它是否只代表该类,现在它不一致,因为您可以看到多个变量实际上可以指向相同的viewController,但实际上每个segue都有自己的实例,为什么还没有跟rootViewController连接?我不知道.

就像您的解决方案一样,请注意Apple的文档中的以下内容

“重要视图控制器是其视图的唯一所有者及其创建的任何子视图,它负责创建这些视图,并在适当的时候放弃其所有权,包括在低内存条件下以及视图控制器本身被释放时如果您使用故事板或nib文件来存储视图对象,则视图控制器要求它们时,每个视图控制器对象会自动获取这些视图的自己的副本,但是如果手动创建视图,则不应使用具有多个视图控制器的相同视图对象“.

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...