Выполните переход в viewWillAppear вызвать проблемы в iOS 7
У меня есть проект, где у меня есть, помимо других экранов, экран "История", экран "Выбрать профиль" и экран "Регистрация нового профиля".
Если пользователь входит в историю и у него не выбран профиль, он должен быть перенаправлен с помощью ChooseProfile, а затем вернуться в историю с профилем. Кроме того, на экране ChooseProfile, если у него еще нет профилей, его необходимо перенаправить на экран "Регистрация нового профиля".
Пользователь не должен видеть все переходы экрана. Когда он решает войти в "Историю", он должен видеть только переход к последнему экрану (например, если у пользователя нет профиля и щелкните, чтобы перейти в "Историю", я должен увидеть переход в "Регистрация нового профиля", чтобы я мог заполнить свои данные). и когда нажмите кнопку ОК, вернитесь к истории с действительным профилем - даже не видя между ними ChooseProfile).
Я мог добиться этого в iOS 6, выполняя сегменты (или делая нажатия) в viewWillAppear контроллера, и все выглядело хорошо. Но в iOS 7 у меня странные эффекты. Например, иногда экран зависает в первом контроллере (History) и, даже если приложение не падает, все кажется отключенным.
В отладке кажется, что он выдвигает другие контроллеры, но экран (представление) не меняется.
Кто-то может помочь мне с решением? Я не хочу переделывать весь мой поток, чтобы решить это...
Благодарю.
Вот некоторые части кода. Надеюсь, поможет.
В HomeController (корень):
- (IBAction)historyBtnPressed:(UIButton *)sender {
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"HistoryController"];
[self.navigationController pushViewController:vc animated:NO];
}
В контроллере истории:
-(void)viewWillAppear:(BOOL)animated {
[_tableView reloadData];
if(!_profile)
[self selectProfilePressed:nil];
}
- (IBAction)selectProfilePressed:(UIButton *)sender {
[self performSegueWithIdentifier:@"ProfileListSegue" sender:nil];
}
Если в первом блоке кода я оставил анимацию: НЕТ, она работает нормально, но у меня нет эффекта перехода, даже с переходом во второй контроллер. Экран (ProfileList) просто появляется.
Если я установлю его на анимированный: ДА в первом блоке кода, мой стек навигации, кажется, запутается.