应用程序总是显示LoginViewController,即使它应该转到ViewController

时间:2013-11-22 16:07:22

标签: ios objective-c

出于某种原因,每当我尝试运行我的应用时,应用都会转到LoginViewController,即使ViewController具有非空值时应该转到passwordCheck

Warning: Attempt to present <UINavigationController: 0x14570ff0> on <LoginViewController: 0x1465ea00> whose view is not in the window hierarchy!

这之前一直有效,直到我切换到使用.xib文件中的Storyboard。这是我的代码(它目前在LoginViewController.m

if (passwordCheck) {
        NSLog(@"%@", usernameField.text);

        // Persist the Username for recovery later
        [[NSUserDefaults standardUserDefaults] setObject:usernameField.text forKey:kUsernameDefaultsKey];
        [[NSUserDefaults standardUserDefaults] synchronize];


        NSError *error = nil;
        [STKeychain storeUsername:[NSString stringWithFormat:@"%@", usernameField.text] andPassword:[NSString stringWithFormat:@"%@", passwordField.text] forServiceName:@"LoginApp" updateExisting:YES error:&error];

        ViewController *viewControl = [self.storyboard instantiateViewControllerWithIdentifier:@"MainControllerNav"];

        // Send username to ViewController

        AppDelegate *dataCenter = (AppDelegate *) [[UIApplication sharedApplication] delegate];

        dataCenter.usernameData = usernameField.text;

        NSLog(@"%@", dataCenter.usernameData);

        viewControl.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [self presentViewController:viewControl animated:YES completion:nil];

        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
    } else {

        NSLog(@"Finish viewDidLoad and wait for future instructions from user.");
}

我尝试使用this answer修复它,但都没有帮助。我该如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

你在哪里有这个代码?在viewDidLoad中?如果是这样,那就是你的问题。在将当前控制器添加到窗口的层次结构之前,不能显示另一个控制器。将代码放在viewDidAppear中,如果您不想看到登录控制器,则显示下一个没有动画的控制器。