2014-09-23 96 views
1

我目前遇到此錯誤消息的問題,它只會在應用程序中出現一次。iOS8窗口層次結構

Attempt to present <NavViewController: 0x1457c370> on <InitalStartupViewController: 0x145371a0> whose view is not in the window hierarchy! 

的方式應用程式功能是,它會要求用戶登錄只有一次(除非該應用被卸載),則每次用戶被引導到下面的視圖控制器之後(這也將發生在用戶登錄後)。這是唯一的錯誤信息,顯示在用戶登錄後

的視圖控制器,該用戶被定向到日誌後是被直接:

[self performSegueWithIdentifier:@"alreadyRegistered" sender:self]; 

我已經看到了,我應該駁回前面的視圖控制器,但我沒有成功停止此消息。

在這種情況下,我應該做一些不同的事情,以便在第一次或每次都登錄後移動到最終的ViewController。

+0

顯示我們在你目前的'NavViewController'的方法。包括方法的聲明,而不僅僅是正文。 – 2014-09-23 15:44:52

回答

0

您有這個問題,因爲您試圖呈現未嵌入您的導航控制器(或其中的一部分)的視圖控制器。

我有一個像你一樣的情況,我已經張貼在這裏的讚賞答案:https://stackoverflow.com/a/12236177/1641848

+0

非常感謝,雖然目前煩人的操作不會影響應用程序的運行,但仍然需要處理。 – TinMan7757 2014-09-24 14:28:48

1

假設您使用的是故事板,您可以在viewDidLoad中爲authenticationViewController放置一個條件,如下所示;

- (void)viewDidLoad{ 
     [super viewDidLoad]; 
     // validate authentication viewController being displayed 

     if(dontDisplayauthenticationController){ 

     UIStoryboard *storyBoard = self.storyboard; 
     UIViewController *targetViewController = [storyBoard instantiateViewControllerWithIdentifier:@"alreadyRegistered"]; 
     UINavigationController *navController = self.navigationController; 


     if (navController) { 
      [navController pushViewController:targetViewController animated:NO]; 
     } else { 

      [self presentViewController:targetViewController animated:NO completion:nil]; 
     } 

     } 
    } 

認證過程保持不變; I.E.認證後仍然調用performSegueWithIdentifier

相關問題