2015-08-17 3 views
0

Я использую синтаксический анализ, и я пытаюсь получить экран входа, чтобы показать, не является ли пользователь «текущим» пользователем. У меня проблемы с моим NavigationController (из моей раскадровки) и использование его как rootViewController, хотя он уже установлен как начальный контроллер просмотра в моей раскадровке. Используя эту строку кода, я выбираю NavigationController (из моей раскадровки) и инициализирую его в своем делете приложения.Настройка UINavigationController (из раскадровки) как rootViewController в AppDelegate.m

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

Если вы начинаете с раскадровки вам нужно, чтобы он установлен в качестве основного интерфейса в Info Развертывание в общих настройках вашего приложения. Вы должны также удалить строку:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

..as это инициализацией нового окна вместо одного, созданных на предыдущем шаге.

+0

Я также принял ваш совет и удалил эту строку кода. –

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; 

Там не получаю ошибку больше.

Смежные вопросы