【发布时间】:2015-02-11 15:11:52
【问题描述】:
我有一个带有导航控制器和默认 RootViewController 的程序。如果我不以编程方式执行任何操作,应用程序就会启动并且 RootViewController 会按我的预期工作,例如下面的情节提要:
我遇到的问题是通过合并可选的 Start ViewController。我想要的是:在我的 AppDelegate (didFinishLaunchingWithOptions) 中,我想要这样的代码:
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"OptionalStartViewController"];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
首先显示可选的启动 ViewController。然后,在用户完成了 Optional viewcontroller 之后,他们就可以显示 RootViewController。
所以在 Optional Start ViewController 中,我添加了这样的代码来显示根视图控制器:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"RootViewController"];
[self appDelegate].window.rootViewController = viewController;
[[self appDelegate].window makeKeyAndVisible];
这一切都有效除了 RootViewController,当显示时,没有预期的导航控件(即视图显示时没有导航控件)。
我也尝试了下面的代码(使用 UINavigationController 而不是 ViewController),结果相同...
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UINavigationController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
[self appDelegate].window.rootViewController = viewController;
[[self appDelegate].window makeKeyAndVisible];
另一个转折……可能有几个可选的开始视图控制器。
有什么想法吗?
【问题讨论】:
-
那么问题是导航栏不存在?
-
使用
UINavigationController的标识符而不是UIViewController(根视图控制器)。 -
将 UINavigationController 设置为 root 确实对我有用。
-
@gabbler...你是不是先设置了一个不同的viewcontroller作为rootviewcontroller,然后再显示你实际的rootviewcontroller?你的代码是什么样的?
-
在我的故事板中,我将可选的视图控制器设置为根,在这个可选的视图控制器中,我单击了一个按钮来显示导航控制器,它起作用了。
标签: ios objective-c