我的应用程序是这样的:应用程序委托中的navigationBar具有类似rootController的Controller1(UIViewController),在controller1中我推控制器2(UIViewController),控制器2有3个UINavigationController,以及自定义tabBar,每个navigationController有一个根控制器,最后我把所有的navigationController放在CustomTabBar中。
我的问题是:这样干净(好)吗?如果没有我可以如何组织我的项目?
MyAppDelegate.h
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UINavigationController *navigationController;
@property (strong, nonatomic) CustomTabBar *tabBarController;
MyAppDelegate.m {
UIViewController *controller1 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
navigationController = [[UINavigationController alloc] initWithRootViewController:controller1];
self.window.rootViewController = navigationController;
}
controller1.h
UIViewController controller2;
UINavigationController *navigationController2;
UIViewController controller3;
UINavigationController *navigationController3;
UIViewController controller3;
UINavigationController *navigationController3;
controller1.m
-(void)viewDidLoad{
viewController1 = [[UIViewController......
navigationController1 = [[UINavigationController alloc] initWithRootViewController:controller1];
....
AppDelegate *apDelegate= [UIApplication sharedApplication].delegate;
apDelegate.tabBarController = [[CustomTabBar alloc] initWithNibName:nil bundle:nil];
[apDelegate.tabBarController setViewControllers: [NSArray arrayWithObjects:navigationController1,navigationController2,navigationController3,nil]];
}
答案 0 :(得分:1)
这是摘自苹果documentation:
的摘录部署标签栏界面时,必须将此视图安装为窗口的根目录。与其他视图控制器不同,标签栏界面不应该作为另一个视图控制器的子项安装。
从我的角度来看,从一开始就解决如何使用UITabBarController类有点棘手,所以在这种情况下更好的方法是看一些好的手册。对我来说this one总是在我开始讨论这个用户界面时总是有帮助:)
祝你好运。 修改强>
为了使您的标签栏仅显示在某些具体视图中,您必须从应用程序的开头隐藏标签栏,并使其仅在您真正需要时显示。
为了隐藏它,您可以使用以下方法:
[theTabBar setHidden:YES];
答案 1 :(得分:0)
将tabBarController设置为window对象的rootViewController:
self.window.rootViewController = tabBarController;
或者您可以将tabBarController.view设置为window对象的子视图:
[self.window addSubView:tabBarController.view];
答案 2 :(得分:0)
如果你想将tabBarController添加到secondo视图:
[secondViewController.view addSubView:tabBarController.view];
或者,对于navigationController
[navigationController1.view addSubView:tabBarController.view];
or
navigationController1.rootViewController = tabBarController;
换句话说,在controller1.m中你声明一个TabBarController并添加navController1,navController2等。
然后将tabBarController作为rootViewController或subView添加到controller1。
我希望这就是你所期待的!