2014-07-09 23 views
-2

我对客观的C和iOS很新颖,因为我主要是一个C++/java开发人员,我无法让我的生活得到performSegueWithIdentifier正常工作,换句话说,它不会移动到下一个Segue公司。我正在做一个简单的登录系统,如果状态代码不是401或403,那么我有条件,然后进入主应用程序。目前在我的故事板中,我有我的主视图控制器与我的textFields和一个按钮来登录。然后,我用MainViewController(不是按钮)和标识符MoveToMainApp和样式model进行了比较。在我的主视图控制器的实施文件中,我有以下方法:iOS:performSegueWithIdentifier麻烦

-(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]; 
    } 

我在这里错过了什么?

+0

发生了什么?它打破了吗? – Dan

+0

对不起,应该明确这一点,它不会移动到下一个赛格。 – JohnnyWineShirt

+0

为了完成故事板的继续,您必须控制从您的登录控制器拖动到您的目标控制器,并出现一个弹出窗口,名称为manual segue,只需选择模式,现在在属性检查器中选择segue为您的那么你可以用[self performSegueWithIdentifier:@“yourIdentifier”sender:self]来调用你的segue; –

回答

0

我会建议使用UINavigationController并推动世界各地的更轻松viewController导航。但是,对于当前模态段的问题,我想知道它是不是正在转换,因为segue从视图控制器本身而不是按钮。尝试创建一个按钮,让segue从它转到下一个视图控制器,但隐藏该按钮,禁用该按钮,并且在角落中,这样它就不能被用户触发。所以基本上将视图控制器的源代码改为按钮。当我想要一个segue时,这是我所做的,但希望它以编程方式触发,除了我使用push segues。你可以尝试的另一件事是在当前视图控制器上调用presentVewController:animated:completion:,并通过在调用之前创建它的一个实例来呈现下一个视图控制器。当你想让呈现的视图控制器消失时,只需拨打dismissViewControllerAnimated:completion:即可。希望这可以帮助!

+0

我试过了隐藏的按钮,一开始不工作。但是,当我在其他地方尝试功能时,它可以正常工作。所以看起来我在调用它没有访问视图控制器 – JohnnyWineShirt