在AFNetworking成功崩溃应用程序后调用segue

时间:2013-06-11 07:02:24

标签: ios afnetworking segue

我正在尝试为我的ios应用程序创建一个登录屏幕,我已经设法在身份验证后恢复了json但是当我尝试调用segue从身份验证后的登录屏幕移动到仪表板时它无法正常工作

我假装做的是基本登录,用户将他的API密钥放在输入上,点击提交,如果没有,则转到dashboardViewController。

检查我的代码:

- (IBAction)touchLogin:(id)sender {    

    NSURL *url = [NSURL URLWithString:@"https://api.site.com/"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request , NSHTTPURLResponse *response , id JSON)
    {
        NSLog(@"Got JSON: %@", JSON);
        [self performSegueWithIdentifier:@"LoginSuccesful" sender:self];
    }
    failure:^(NSURLRequest *request , NSHTTPURLResponse *response , NSError *error , id JSON){
        NSLog(@"Something went wrong. %@ - %@", [error localizedDescription], JSON);
    }];

    [operation setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge)
    {
        if (challenge.previousFailureCount == 0)
        {

            NSURLCredential *creds = [NSURLCredential credentialWithUser:self.apiKeyTextField.text
                                                                password:@""
                                                             persistence:NSURLCredentialPersistenceForSession];

            [[challenge sender] useCredential:creds forAuthenticationChallenge:challenge];
        }
        else
        {
            NSString *errorString = @"Incorrect API Key";
            UIAlertView *errorAlertView = [[UIAlertView alloc] initWithTitle:@"Error" message:errorString delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
            [errorAlertView show];

            NSLog(@"Previous auth challenge failed. Are username and password correct?");
        }
    }];

    [operation start];

}

我创建了segue并将标识符设置为“LoginSuccesful”,我不确定是否应该在该代码块中调用segue。

当我运行应用程序时,我使用JSON获取NSLog,但是当尝试执行segue并向我显示错误时应用程序崩溃

Terminating app due to uncaught exception 'NSGenericException', reason: 'Could not find a navigation controller for segue 'LoginSuccesful'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.

但是如果你看一下我的故事板文件,我就创建了这个segue甚至放了导航控制器。

enter image description here

有人有这个问题吗?有人能让我知道如何在认证结束后调用另一个ViewController吗?

我不确定这是否是最好的方法,即使对于错误警报视图也是如此,但它工作正常

2 个答案:

答案 0 :(得分:2)

选择第一个视图控制器(如屏幕截图所示)。然后,在菜单上,转到编辑器 - >嵌入 - >导航控制器。执行此操作后,不需要第二个导航控制器。您可以在View Controller和Table View Controller之间拖动segue。从错误中可以看出问题是“源控制器”没有“UINavigationController的实例”。

答案 1 :(得分:1)

该错误表明您的NavigationalController的根视图不是主ViewController。