在AppDelegate.m中将UINavigationController(来自storyboard)设置为rootViewController

时间:2015-08-17 22:47:00

标签: ios objective-c uinavigationcontroller

我正在使用解析,我正在尝试登录屏幕以显示用户是否不是“当前”用户。我的导航控制器问题(来自我的故事板)并将其用作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;
}

2 个答案:

答案 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;

不再出现错误。