我正在使用解析,我正在尝试登录屏幕以显示用户是否不是“当前”用户。我的导航控制器问题(来自我的故事板)并将其用作rootViewController,即使它已经在我的故事板中设置为初始视图控制器。使用这行代码我选择NavigationController(来自我的故事板)并在我的app delegate中初始化它。
UINavigationController *navVC = (UINavigationController *)self.window.rootViewController;
然后我决定是否显示loginVC然后最后我将NavigationController设置为rootViewController:
self.window.rootViewController = navVC; [self.window makeKeyAndVisible];
除了我没有的人。当我尝试构建我的应用程序时出现此错误。 “在应用程序启动结束时,应用程序窗口应该有一个根视图控制器”任何人都有任何想法会出现什么问题?
以下是所有代码。
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
UINavigationController *navVC = (UINavigationController *)self.window.rootViewController;
// Initialize Parse.
[User registerSubclass];
[Question registerSubclass];
[Parse setApplicationId:@"HI"
clientKey:@"HI"];
// Determine whether or not to show the login screen
if (![PFUser currentUser]) {
LogInViewController *loginVC = [[LogInViewController alloc] init];
[navVC setViewControllers:@[loginVC] animated:YES];
} else {
QuestionsTableViewController *questionsVC = [[QuestionsTableViewController alloc] init];
[navVC setViewControllers:@[questionsVC] animated:YES];
}
self.window.rootViewController = navVC; [self.window makeKeyAndVisible];
return YES;
}
答案 0 :(得分:0)
如果您从故事板开始,则需要在应用程序的常规设置中将其设置为部署信息中的主界面。您还应该删除该行:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
..因为它在上一步创建的窗口的位置初始化了一个新窗口。
答案 1 :(得分:0)
我使用这两行代码来解决问题。我从这里得到答案: Programmatically set the initial view controller using Storyboards
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *navVC = [storyboard instantiateViewControllerWithIdentifier:@"QuestionsView"];
我删除了这一行:
UINavigationController *navVC = (UINavigationController *)self.window.rootViewController;
不再出现错误。