0

这是我要返回的简单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

4

2 回答 2

0

试着意识到应该发生什么

-(void)viewWillDisappear:(BOOL)animated
  {
    [self.navigationController popToRootViewControllerAnimated:YES];
    [super viewWillDisappear:animated];

  }

第一次调用viewWillDisappear方法。这将首先执行。执行此操作后,您当前的视图是“ B ”。然后执行“ [self.navigationController popToRootViewControllerAnimated:YES] ”这样。您将看到A<-B(从 B 支持的视图 A)

所以,你会看到所有A<-B<-C

要解决此问题,请尝试在viewWillDisappear方法 之外执行popToRootViewControllerAnimated方法

于 2015-10-16T13:47:36.267 回答
0

尝试使用

[self.navigationController popToViewController:VC animated:YES] 

代替

[self.navigationController popToRootViewControllerAnimated:YES]

将其包装在一个类别中并添加您的逻辑以使其更加模块化。您可以跳转到任何视图控制器。

另一种方法是我认为你绝对应该避免的 swizzling popToRootViewControllerAnimated,因为这是在应用程序方面大量使用的通用方法。您可以使用 swizzled 行为修改它的实际行为。

有关调酒,请参阅http://nshipster.com/method-swizzling/

于 2015-10-16T13:25:55.427 回答