导航控制器与标签栏控制器的组合

正如我在标题中提到的,我想将Navigation Controller添加到已经具有Tab Controller应用程序中。 所以试图做这个页面上的工作人员。 无论如何,有些事情是错的。 UINavigationController正在寻找一个空白页面,即使有一个视图和一些库。

让我从头开始:

在我的AppDelegate ,我设置了标签栏控制器,如下所示:

 @interface MYAppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) UITabBarController *tabBarController; @end 

这里是.m文件:

 @implementation MYAppDelegate @synthesize window = _window; @synthesize tabBarController = _tabBarController; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.applicationSupportsShakeToEdit = YES; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UINavigationController *viewController1 = [[[MYMainViewController alloc] init] initWithNibName: @"MYMainViewController" bundle:nil]; UIViewController *viewController2 = [[[MYPageViewController alloc] init] initWithNibName:@"MYPageViewController" bundle:nil]; UIViewController *viewController3 = [[[MYSearchViewController alloc] init] initWithNibName:@"MYSearchViewController" bundle:nil]; UIViewController *viewController4 = [[[MYPersonViewController alloc] init] initWithNibName:@"MYPersonViewController" bundle:nil]; // Initialize tabBarController and add ViewControllers self.tabBarController = [[UITabBarController alloc] init]; self.tabBarController.viewControllers = [NSArray arrayWithObjects: viewController1, viewController2, viewController3, viewController4, nil]; self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; return YES; } 

然后,这里是一个UINavigationController MYMainViewController实现:

 - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"%@", [self navigationController]); // Logging null } 

我的.xib文件有一个UINavigationController ,并且里面有一个视图。 尽pipe如此,当我工作的应用程序,有空白页面和无标题的导航栏。 我究竟做错了什么?

如果我可以看到我的视图的内容,我想通过使用后退button在两个视图控制器之间导航。

任何帮助或方法对我来说都是好事。

尝试从xib中删除导航控制器,所以它只有视图控制器,然后以编程方式初始化导航控制器:

 UIViewController *tmpViewController1 = [[[YourViewController alloc] init] initWithNibName:@"YourViewController" bundle:nil]; UINavigationController *viewController1 = [[UINavigationController alloc] initWithRootViewController:tmpViewController1];