Приложение для iOS аварийно завершает работу при переходе на push-уведомление, но только при установке

При первой установке моего приложения я пытаюсь выполнить переход к переходу. Я внедрил UINavigationController.

Но когда я пытаюсь нажать кнопку, чтобы перейти к моему второму контроллеру просмотра, приложение вылетает, и я получаю эту ошибку:

«Завершение работы приложения из-за неперехваченного исключения NSGenericException, причина: переходы push-уведомлений могут использоваться только в том случае, если исходный контроллер управляется экземпляром UINavigationController».

Но это происходит только с первой попытки, при установке. Если я ничего не изменю и снова запущу приложение, переход успешно отправит меня на второй контроллер представления.

Любые идеи относительно того, что происходит? Дайте мне знать, какую дополнительную информацию мне нужно предоставить.

РЕДАКТИРОВАТЬ

У меня есть UIPageViewControllers в качестве вводных экранов приложения в начале.

В AppDelegate.m у меня есть

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"hasSeenTutorial"]) {
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
pageControl.backgroundColor = [UIColor whiteColor];

UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *walkthrough =
[storyBoard instantiateViewControllerWithIdentifier:@"IntroViewController"];
[self.window setRootViewController:walkthrough];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasSeenTutorial"];
}
return YES;

И у меня есть кнопка в UIPageView, которая отправляет пользователя в ViewController, который запускает начало

- (IBAction)ready:(id)sender {


UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController =
[storyBoard instantiateViewControllerWithIdentifier:@"ViewController"];
[self presentViewController:viewController animated:YES completion:nil];


}

person MScottWaller    schedule 13.05.2014    source источник
comment
Откуда вы знаете, что это один и тот же переход и точно такой же набор обстоятельств при первой установке и других запусках?   -  person Gruntcakes    schedule 13.05.2014
comment
Я внес правку, которая объясняет ситуацию в начале   -  person MScottWaller    schedule 13.05.2014
comment
Сообщение об ошибке точно описывает проблему: Push-переходы можно использовать только тогда, когда исходный контроллер управляется экземпляром UINavigationController. У вас есть push-переход, но вы не помещаете контроллер представления в стек навигации. Если у вас нет навигационного контроллера в приложении и вы не собираетесь его иметь, не делайте тип переходов «push». Если ваше приложение предназначено для контроллера навигации, но не добавляет его и нажимает на него контроллеры представления. Должен ли ваше приложение иметь навигационный контроллер или нет, это другой вопрос.   -  person Gruntcakes    schedule 13.05.2014
comment
У меня был навигационный контроллер. Я просто не отправил пользователя к навигационному контроллеру после того, как пользователь закончит вводные экраны, которые появляются при первой установке. Я отправил их в ViewController. Теперь, когда я отправил их на навигационный контроллер после того, как они посмотрели вступительные экраны, приложение работает нормально :)   -  person MScottWaller    schedule 13.05.2014


Ответы (1)


Что ж, на случай, если кто-нибудь когда-нибудь столкнется с этой проблемой, после вводных экранов я отправил пользователя в NavigationViewController вместо ViewController, вот так

- (IBAction)ready:(id)sender {


UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController =
[storyBoard instantiateViewControllerWithIdentifier:@"NavigationViewController"];
[self presentViewController:viewController animated:YES completion:nil];


}

И это заставило работать. Спасибо Мартину Х за то, что он подтолкнул к исследованию.

person MScottWaller    schedule 13.05.2014