如何以编程方式添加导航控制器?

5
我使用以下代码,但它没有加载:
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
self.mapViewController = [storyboard instantiateViewControllerWithIdentifier:@"MapViewController"];
self.navigationController = [[UINavigationController alloc]initWithRootViewController:self];

self.navigationBar = [[UINavigationBar alloc]init];
[self.view addSubview:self.navigationBar];

[self.navigationController.navigationController pushViewController:self.mapViewController animated:YES];

self.navigationController.navigationController 将始终为 nil。导航控制器永远不可能在另一个导航控制器中。 - rmaddy
在视图控制器中创建和分配导航控制器是没有意义的。通常情况下,您会在更高的级别上创建导航控制器,并使用根视图控制器进行设置。然后,当视图控制器想要推送另一个视图控制器(就像这里一样),您只需将新的视图控制器推送到 self.navigationController 上即可。 - rmaddy
仅返回翻译后的文本:没有它,它不会显示。 - user3267017
你应该阅读《iOS视图控制器编程指南》。 - rmaddy
2个回答

8
尝试如下操作:
UIViewController *bbp=[[UIViewController alloc]initWithNibName:@"UIViewController" bundle:nil];
UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:bbp];
// [self.navigationController presentModalViewController:passcodeNavigationController animated:YES];
  [self.navigationController pushViewController:passcodeNavigationController animated:YES];
  [passcodeNavigationController release];

谢谢,我看了很多问题,但只有这个答案帮助了我 :) 适用于iOS9。 - Mudriy Ilya
我遇到了如下编程错误:'release' 不可用:在自动引用计数模式下不可用。 - Ben Shabat

3

将以下代码添加到AppDelegate.m文件的didFinishLaunchingWithOptions函数中:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"YOUR_STORYBOARD_NAME" bundle:nil];
yourViewControllerClassName *vc = [sb instantiateViewControllerWithIdentifier:@"YOUR_VIEWCONTROLLER_ID"];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];

yourViewControllerClassName 是与您的视图控制器链接的.h和.m文件名。

YOUR_STORYBOARD_NAME 是您的.storyboard文件的名称。例如,如果您的.storyboard文件名为Main.storyboard,则填写Main

YOUR_VIEWCONTROLLER_ID 是您的视图控制器的ID。您可以在Identity inspector中进行编辑。(见照片)

希望这能帮到您:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接