所以我有一切工作我想要...有点......但是我想我会以错误的方式去做,并且想确保我从一开始就做到这一点。所以我会尽我所能来解释我现在拥有的东西(因为我对iOS很新,所以对我来说很简陋)。
所以在我的appDelagate中,我有一个名为“FrontPage”的UIViewController,它基本上是一个登录屏幕。一旦登录已经过身份验证,它就会从超级视图中删除自己,并在NC中创建一个tabbarcontroller,navigationcontroller(内部tabbar)和各种UIViewControllers,并在标签栏中自行创建。然后我将我的TabBarVC.view推送到windows子视图。
就像我说的那样有效,但我希望在将windows子视图设置为TabBarVC.view之后,我可以释放TabBarViewController来解除它,并且appdelagate将拥有TabBarVC,但是当我这样做时它会崩溃。
当我输入这个时,我意识到我从未通过实际的TabBarVC,只是视图,但有没有办法做到这一点?
如果我完全搞砸了,请告诉我。
感谢您的任何建议。
答案 0 :(得分:0)
您应该将窗口的rootViewController
属性设置为UITabBarController
实例,类似于:
// set the tab bar controller as our root view controller
[self.window setRootViewController:tabBarController];
为了澄清,这会将TabBarController及其视图及其所有子视图添加到窗口的视图层次结构中,我建议您也将此方法用于登录视图控制器。
答案 1 :(得分:-1)
你可以让你的UITabBarController成为app委托的IBOutlet
(或者只保留你生成它的代码)。使它成为app委托的保留属性,合成属性,并在app delegate(self.tabBarController = ...
)中创建UITabBarController,或者如果使用xib,则从UITabBarController到app创建IBOutlet
连接委托在xib。
您可以将UITabBarController添加到应用程序的窗口,然后在其上添加FrontPage UIViewController。从窗口中删除FrontPage后,UITabBarController就会出现在它下面。