У меня есть контроллер навигации, который представлен модально с 4 представлениями в стеке. В финальном представлении есть кнопка "Готово", которая закрывает модальное представление. Когда я затем снова представляю модальное представление, оно автоматически переходит к этому последнему представлению вместо первого. Я добавил строку для всплывающего окна при первом просмотре после закрытия, но она добавляет странную анимацию независимо от того, установил ли я ее на ДА или НЕТ. Может я неправильно делаю?
- (void)dismissModalView
{
[self dismissModalViewControllerAnimated:YES];
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:([self.navigationController.viewControllers count] -4)] animated:YES];
}
Обновлять:
Это метод, используемый для представления модального представления/контроллера навигации.
- (void)showModalView
{
self.optionsNavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.navigationController presentModalViewController:self.optionsNavController animated:YES];
}
Ответ 1 · Enrico Susatyo
Нет, выглядит правильно. Если вы хотите сохранить состояние контроллера навигации, не представляйте его модально, так как он будет освобожден, когда вы закроете представление.
Модальные представления обычно используются для представления информации, которую нужно показать только кратко, без сохранения состояния представления (например, о странице, странице входа, странице настроек и т. д.).
Ответ 2 · Madhu
Извините, если я упрощаю вашу проблему, но если вам нужно вернуться прямо к первому контроллеру представления, возможно, вы могли бы попробовать метод popToRootViewControllerAnimated: вместо popToViewController:.
Ответ 3 · Sherman Lo
Я не уверен, в чем проблема с опубликованным вами кодом отклонения, но должно работать следующее:
- (void)showModalView
{
self.optionsNavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.optionsNavController popToRootViewControllerAnimated:NO];
[self.navigationController presentModalViewController:self.optionsNavController animated:YES];
}
Кроме того, viewDidLoad предназначен для вызова только один раз при каждой загрузке представления, viewWillAppear a