我真正构建了这个简单的问题。
我只是使用以下代码从一个视图控制器移动到另一个视图控制器。
homescreen *home;
home=[self.storyboard instantiateViewControllerWithIdentifier:@"home"];
[self presentViewController:home animated:YES completion:nil];
在AppDelegate
方法中尝试使用相同的代码。
UIStoryboard *storyboard;
sur= [storyboard instantiateViewControllerWithIdentifier:@"survey"];
[self.window.rootViewController presentViewController:sur animated:YES completion:nil];
当我使用此代码时,我遇到了这个崩溃:
由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:'应用程序尝试在目标上显示nil模态视图控制器
我不想让它成为根视图控制器,只需要移动它。
答案 0 :(得分:3)
您只声明UIStoryboard *storyboard
未初始化它,在下一行中,您在nil对象上调用方法instantiateViewControllerWithIdentifier
。最终storyboard
变量在以下行和崩溃中替换nil。
sur= [storyboard instantiateViewControllerWithIdentifier:@"survey"];
答案 1 :(得分:3)
您无法直接在空的window.rootViewController上显示视图。您需要先将其设置为任何viewController,然后显示需要显示的viewController。请参阅此代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
InitialViewController *initialVC = [storyboard instantiateViewControllerWithIdentifier:@"InitialViewController"];
self.window.rootViewController = initialVC;
[self.window makeKeyAndVisible];
ShowThisViewController *showThisVC = [storyboard instantiateViewControllerWithIdentifier:@"ShowThisViewController"];
[self.window.rootViewController presentViewController:showThisVC animated:YES completion:nil];
return YES; }
答案 2 :(得分:1)
答案 3 :(得分:1)
使用此代码
DEMORootViewController *VerifyV = [self.storyboard instantiateViewControllerWithIdentifier:@"Identifier"];
UINavigationController *navigationController=[[UINavigationController alloc]initWithRootViewController:VerifyV];
self.window.rootViewController = navigationController;
答案 4 :(得分:0)
只需尝试以下代码:
UIStoryboard *storyboard;
survey *sur= [storyboard instantiateViewControllerWithIdentifier:@"survey"];
UIViewController *curViewCont = [UIApplication sharedApplication].keyWindow.rootViewController;
while (curViewCont.presentedViewController) {
curViewCont = curViewCont.presentedViewController;
}
[curViewCont presentViewController:sur animated:YES completion:nil];
希望它对你有用。