2012-10-03 44 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];