这是情况。我在Appdelegate.m中有一个NSTimer,它执行一种检查用户位置的方法,并在他不在某个区域时将其记录下来。当发生这种情况时,我想加载登录视图控制器。但是,通过以下几行代码,我可以看到VC,但是如果我单击要输入的文本字段,我会得到一个sigbart。如何正确地从app委托加载初始VC?
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
LoginViewController *loginViewController = (LoginViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"Login"];
[self.window addSubview:loginViewController.view];
[self.window makeKeyAndVisible];
答案 0 :(得分:12)
我一直在努力解决这个问题。这对我有用
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
LoginViewController *loginViewController = (LoginViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"Login"];
//set the root controller to it
self.window.rootViewController = loginViewController
如果您仍然有错误,那么它与您的LoginViewController有关,而不是AppDelegate转换。希望这会有所帮助。
答案 1 :(得分:4)
发烧友和弗拉维乌的方法都可以。但是你们俩都错过了一行额外的代码。
我发现你必须先分配并初始化UIWindow对象。我不知道为什么,但初始化对象解决了问题。
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
发烧友的方法:
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
ResultsInListViewController *resultsInListViewController = (ResultsInListViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"ResultsInListViewController"];
[self.window addSubview:resultsInListViewController.view];
[self.window makeKeyAndVisible];
Flaviu的方法:
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
ResultsInListViewController *resultsInListViewController = (ResultsInListViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"ResultsInListViewController"];
[self.window setRootViewController:resultsInListViewController];
[self.window makeKeyAndVisible];
答案 2 :(得分:1)
这是我想要更改视图时使用的代码:
#import "LoginViewController.h"
LoginViewController *screen = [[LoginViewController alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:screen animated:YES];
//or
[self.window addSubView:screen];
使用该代码将创建一个全新的实例并显示它,因此它应该完成您的问题。你可能不得不移动一些东西,但它应该有效。
如果您需要更多帮助,请与我们联系。
希望这能帮到你!