Ios 警告:试图在视图不在窗口层次结构中的ViewController上显示UINavigationController

Ios 警告:试图在视图不在窗口层次结构中的ViewController上显示UINavigationController,ios,objective-c,Ios,Objective C,我正在开发一款ios应用程序,我对它还不熟悉。所以,我得到了这个错误。我想做的是,当用户首次在应用程序上注册时,他们的用户名将使用NSUserdefault本地存储在手机上 现在,如果他们关闭并重新打开应用程序,应用程序将通过第一个视图控制器,并在viewdidload方法中检查USUserdefault的长度是否大于零,如果是,则通过执行segue调用转到主活动。然而,当我运行它时,我得到了这个错误 这就是我在故事板上所做的。 这是firstviewcontroller中的代码 - (voi

我正在开发一款ios应用程序,我对它还不熟悉。所以,我得到了这个错误。我想做的是,当用户首次在应用程序上注册时,他们的用户名将使用NSUserdefault本地存储在手机上

现在,如果他们关闭并重新打开应用程序,应用程序将通过第一个视图控制器,并在viewdidload方法中检查USUserdefault的长度是否大于零,如果是,则通过执行segue调用转到主活动。然而,当我运行它时,我得到了这个错误

这就是我在故事板上所做的。

这是firstviewcontroller中的代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSString *user = [prefs stringForKey:@"userName"];

    if(user.length>0){
        NSLog(@"Going straight to main %s", "Yes");
        [self performSegueWithIdentifier:@"startMain" sender:self];

    }
}

您只需将该方法移动到ViewDidDisplay即可:

-(void)viewDidAppear:(BOOL)animated {
       [super viewDidAppear:animated];
       NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSString *user = [prefs stringForKey:@"userName"];

       if(user.length>0){
               NSLog(@"Going straight to main %s", "Yes");
               [self performSegueWithIdentifier:@"startMain" sender:self];

       }
}

你哪里来的错误?我真的不明白。当我第一次启动应用程序并加载firstviewcontroller.Perfect时,我收到错误。谢谢,伙计,成功了。我需要再等7分钟才能接受你的回答。@MichaelNana很乐意帮忙!