iOS:performSegueWithIdentifier麻烦

时间:2014-07-09 16:39:13

标签: ios objective-c

我对目标C和iOS都很陌生,因为我主要是一个C ++ / java开发人员而且我不能让我的生活让performSegueWithIdentifier正常工作,换句话说,它不会移动到下一个Segue公司。我正在建立一个简单的登录系统,如果状态代码不是401或403,我有一个条件,然后转到主应用程序。目前在我的故事板中,我有我的主视图控制器,我的textFields和一个登录按钮。然后,我使用标识符MainViewController和样式MoveToMainAppmodel(不是按钮)创建了一个segue。在我的主视图控制器的实现文件中,我有以下方法:

-(void)moveToMainApp
{
    [self performSegueWithIdentifier:@"MoveToMainApp" sender:nil];
}

- (IBAction)login:(id)sender {
    NSString *username = _usernameTxt.text;
    NSString *password = _passwordTxt.text;
    _errorLabel.text = @"";
    if(username.length > 0 && password.length > 0)
    {
        AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://samplesite.org/mobile_app"]];
        [httpClient setParameterEncoding:AFFormURLParameterEncoding];
        NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST"
                                                                path:@"http://samplesite.org/mobile_app/login.php"
                                                          parameters:@{@"username":username, @"password":password}];
        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
        [httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];
        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
            // Print the response body in text
            NSLog(@"Response: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"Error: %@", error);
            NSInteger statusCode = operation.response.statusCode;
            if(statusCode == 401 || statusCode == 403)
            {
                _errorLabel.text = @"Invalid credentials";
            }
            else
            {
                [self moveToMainApp];
            }
        }];

        [operation start];
    }

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我建议使用UINavigationController并在各处推送segue以便于viewController导航。但是对于你目前的模态segue问题,我想知道它是否没有转换,因为segue来自视图控制器本身,而不是按钮。尝试创建一个按钮并让segue从它移动到下一个视图控制器,但是按钮隐藏,禁用,并且在角落中,因此用户无法触发。所以基本上将视图控制器中的源更改为按钮。这就是我想要一个segue时所做的,但是希望它以编程方式触发,除了我使用push segues。您可以尝试的另一件事是在当前视图控制器上调用presentVewController:animated:completion:,并通过在调用之前创建它的实例来呈现下一个视图控制器。如果希望显示的视图控制器消失,只需调用dismissViewControllerAnimated:completion:即可。希望这有帮助!