2012-10-03 45 views
1
- (void)viewWillDisappear:(BOOL)animated 
{ 
    if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound) { 
     if ([self.navigationController.viewControllers.lastObject isKindOfClass:[CustomViewController class]]) { 
      NSArray *tempArr = self.navigationController.viewControllers; 
      self.navigationController.viewControllers = tempArr; 
      [self.navigationController popViewControllerAnimated:YES]; 
      return; 
     } 
    } 
    [super viewWillDisappear:animated]; 
} 

如果用户按下后退按钮,并且之前的UIViewController是CustomViewController,那么弹出2最后一个UIViewControllers else pop 1 last UIVIewController。iOS。问题与viewControllers数组?

我觉得这些字符串意味着什么:

 NSArray *tempArr = self.navigationController.viewControllers; 
     self.navigationController.viewControllers = tempArr; 

但是,如果我删除他们,那么我弹出2个最后UIViewControllers并获得CustomViewController的标题,而不是从当前的UIViewController的称号。

这是一个错误?此代码是否适用于iOS 6?

+0

omg问题是最后一个短语 – Gargo

+0

我不同意这个被关闭。 – Fogmeister

回答

1

有一个更好的方法来做到这一点,通过使用放松segues。

基本上,你在ViewController上设置了一个标记点​​,然后去推动视图控制器。

然后在任何时候(当用户按下某个按钮或某个东西时),您可以使用标记将其弹回到viewController。

你不再需要制定出多少个视图控制器来弹出等......它只是工作。

看到这个StackOverflow answer

2

我不确定这是否会真正起作用,因为我不知道popViewController是否在弹出之前或之后检查数组。这个想法是删除最后一个对象而不是两次弹出viewController。

- (void)viewWillDisappear:(BOOL)animated 
{ 
    if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound) { 
     if ([self.navigationController.viewControllers.lastObject isKindOfClass:[CustomViewController class]]) { 
      NSMutableArray *tempArr = [self.navigationController.viewControllers mutableCopy]; 
      [tempArr removeLastObject]; 
      self.navigationController.viewControllers = tempArr; 
      return; 
     } 
    } 
    [super viewWillDisappear:animated];