我有一个带有导航控制器和默认RootViewController的程序.如果我没有以编程方式执行任何操作,应用程序将启动并且RootViewController按预期工作,例如下面的故事板表示:

我遇到的问题是通过合并Optional Start ViewController.我想要的是:在我的AppDelegate(didFinishLaunchingWithOptions)中,我想要这样的代码:
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"OptionalStartViewController"];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
首先显示可选的Start ViewController.然后,在用户完成Optional可视控件后,他们可以显示RootViewController.
所以在Optional Start ViewController中,我添加了这样的代码来显示Root View Controller:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"RootViewController"];
[self appDelegate].window.rootViewController = viewController;
[[self appDelegate].window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
这一切都有效,除了 RootViewController,如图所示,没有预期的导航控件(即视图显示没有导航控件).
我也尝试过以下代码(使用UINavigationController而不是ViewController),结果相同......
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UINavigationController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
[self appDelegate].window.rootViewController = viewController;
[[self appDelegate].window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
另一个扭曲......可能有几个可选的启动视图控制器.
有任何想法吗?
UINavigationControllerEditor >> Embed In >> Navigation ControllerNavigation Controller和右侧实用程序区域,选择选项Is Initial View Controller如果要动态更改根视图控制器,则最好以编程方式进行,在中didFinishLaunchingWithOptions,获取窗口实例,使用根视图控制器初始化导航控制器,然后将Windows根视图控制器设置为导航控制器.这是代码.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
OptionalFirstViewController *optionalFirstViewController = [[OptionalFirstViewController alloc] initWithNibName:@"OptionalFirstViewController" bundle:nil];
UINavigationController *homeNavigationController = [[UINavigationController alloc] initWithRootViewController:optionalFirstViewController];
[optionalFirstViewController release];
self.window.rootViewController = homeNavigationController;
[homeNavigationController release];
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
并确保取消选中Is Initial View Controller故事板中的所有视图控制器
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
16475 次 |
| 最近记录: |