2014-09-23 133 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