UINavigationController popToRootViewControllerAnimated возвращается один за другим
Это простой код, к которому я звоню, чтобы вернуться rootViewController
из UINavigationController
:
-(void)viewWillDisappear:(BOOL)animated
{
[self.navigationController popToRootViewControllerAnimated:YES];
[super viewWillDisappear:animated];
}
Но задняя навигация происходит одна за другой.
Скажем, у меня есть 3 viewControllers - A, B, C.
A -> B -> C
То, что я хочу на задней части C, это:
C -> A
Но при использовании popToRootViewControllerAnimated вот как выглядит обратная навигация:
C -> B -> A
2 ответа
Попробуй понять, что должно произойти
-(void)viewWillDisappear:(BOOL)animated
{
[self.navigationController popToRootViewControllerAnimated:YES];
[super viewWillDisappear:animated];
}
Сначала вы вызываете метод viewWillDisappear. который будет выполняться первым. после выполнения этого вашего текущего представления " B ". Затем выполняет " [self.navigationController popToRootViewControllerAnimated: YES] ", поэтому. Вы увидите A <-B (вид А с б)
Итак, вы увидите во всех A <-B <-C.
Чтобы решить эту проблему, попробуйте выполнить метод popToRootViewControllerAnimated вне метода viewWillDisappear
Попробуй использовать
[self.navigationController popToViewController:VC animated:YES]
вместо
[self.navigationController popToRootViewControllerAnimated:YES]
оберните это в категорию и добавьте свою логику, чтобы сделать его более модульным. Вы можете перейти на любой вид контроллера.
Другой способ сделать это то, что popToRootViewControllerAnimated
я думаю, что вам определенно следует избегать, так как это общий метод, широко используемый в приложениях. Вы можете изменить его реальное поведение с помощью своего извращенного поведения.
Смотрите http://nshipster.com/method-swizzling/ для ознакомления.