是不是可以在UINavigationController中推送UITabBarController?我在旧版本的iOS中读回来但现在仍然如此?
解决方法
简单地说,是的,你可以.
但仅仅因为你可以,并不意味着你应该. UITabBarController旨在用作根级别的viewController(作为应用程序窗口的rootViewController).目的是为用户提供最好(最简单)的用户体验. Apple建议保持应用程序的视图层次结构,使得从一个视图控制器到另一个视图控制器只有一个“路径”.
广泛接受的使用UITabBarControlleris将其设置为rootViewController的方法,并将UIViewControllers分配给每个“tab”.如果您希望能够从这些视图控制器推送/弹出,您可以为每个选项卡分配一个UINavigationController,使用自己的rootViewControllers,就像iOS的Facebook应用程序一样.
如果您决定将其推送到UINavigationController,则建议在每个选项卡中使用简单的viewControllers,而不是UINavigationControllers,以避免多个视图层次结构.剩下的就是你作为开发人员.在任何情况下,易编码都会影响最终用户的体验.优先事项始终是后者.
编辑:
>创建一个UITabBarController.
>使用以下方法为每个选项卡设置根视图控制器:
tabBarController.viewControllers = [NSArray arrayWithObjects: alphaController,betaController,nil];
>将其推入导航控制器.
>在UITabBarController类的viewDidLoad方法中(建议子类化),设置它的UITabBar项(UIBarButtonItems).
使用UITabBarControllerDelegate,您可以处理他们的选择.您不必在选择选项卡时显示viewControllers.您可以通过覆盖shouldSelectViewController:方法来改变它们的行为.