1

我有下面的代碼在拆分視圖控制器推一個新的視圖控制器:檢查控制器已加載的XCode

Level4ViewController *controller = [[Level4ViewController alloc] initWithNibName:@"ModuleViewController" bundle:nil]; 
    [[detailViewController navigationController] pushViewController:controller animated:YES]; 
    [controller release], controller = nil; 

我唯一的問題,如果我再次運行此,新控制器會顯示,我希望能夠用我所有的數據去看看我以前的看法。

任何人都可以幫助我在這裏。

謝謝。

編輯:

更新的代碼?

Level4ViewController *controller; 
    for(UIView *view in self.navigationController.viewControllers) 
    { 
     if([view isKindOfClass:[Level4ViewController class]]) 
     { 
      controller = view; 
      if(controller == nil) 
      { 
       controller = [[Level4ViewController alloc] initWithNibName:@"ModuleViewController" bundle:nil]; 
      } 
      else { 
       controller = [self.navigationController.viewControllers objectAtIndex:1]; 
      } 

     } 
    } 

    [[detailViewController navigationController] pushViewController:controller animated:YES]; 
    [controller release], controller = nil; 
+0

你爲什麼不彈出控制器回去嗎? – 2011-05-23 12:04:32

回答

1

UINavigationController有一個屬性viewControllers這是一個記錄所有已推到導航控制器的堆棧,此數組中,你可以檢查您的視圖控制器如果它是有一個NSArray使用一個 - 你檢查這樣的 -

Level4ViewController *lvc; 

for(UIView *view in self.navigationController.viewControllers) 
{ 
    if([view isKindOfClass:[Level4ViewController class]]) 
    { 
      lvc = view; 
    } 
} 

,如果你已經知道,在哪個索引您的視圖 - 控制是有那麼你可以從該指數獲得的是 -

Level4ViewController *lvc = [self.navigationController.viewControllers objectAtIndex:1]; 

更新 -

Level4ViewController *controller; 
for(UIView *view in self.navigationController.viewControllers) 
{ 
    if([view isKindOfClass:[Level4ViewController class]]) 
    { 
     controller = view; 
    } 
} 

if(controller == nil) 
{ 
    controller = [[Level4ViewController alloc] initWithNibName:@"ModuleViewController" bundle:nil]; 
} 

[[detailViewController navigationController] pushViewController:controller animated:YES]; 
[controller release], controller = nil; 
+0

但是有什麼可以使用的語句,如果(如果(level4Controller已經加載然後推加載一個,否則推新的? – 2011-05-23 12:10:35

+0

從該數組中獲取您的視圖控制器實例檢查它是否等於零,然後使用創建新實例並推它,它是不等於零然後使用那一個推。 – saadnib 2011-05-23 12:18:06

+0

謝謝,我編輯我的問題上面的代碼我已經實施,但我知道這是錯的,但我不知道在哪裏? – 2011-05-23 12:24:26

0

如果您使用的是導航控制器

FirstScreenViewController *firstScreenVC = [self.storyboard instantiateViewControllerWithIdentifier:@"1S"]; 

    if (![self.navigationController.topViewController isKindOfClass:FirstScreenViewController.class]) 
     [self.navigationController pushViewController:firstScreenVC animated:YES];