成功登录后如何“推送”到主视图控制器

时间:2015-12-03 06:16:31

标签: ios objective-c iphone xcode

我在ios9中使用故事板。我有两个屏幕。一个是登录屏幕,另一个是homeviewcontroller。如果登录成功,我必须导航homeviewcontroller。这是我的要求。使用json解析器和协议的jam是NSURLSession用于登录页面。如果登录成功,则导航到homeviewcontroller。所以我正在写一些代码。登录成功。成功登录后,他们没有导航到homeviewcontroller。我是故事板的新手。有人帮帮我。提前谢谢。

- (IBAction)login:(id)sender {

NSString *user_name=userName.text;

NSString *pass_word=password.text;

NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http:/Service/security.svc/LoginUser?strUserName=%@&strPassword=%@",pass_word,user_name]];

NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url
                                                             completionHandler:^(NSData *data,
                                                                                 NSURLResponse *response,
                                                                                 NSError *error)

{

if (!error)

{

NSError *JSONError = nil;


NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data
                                                                                                     options:0 error:&JSONError];


if (JSONError)

{

NSLog(@"Serialization error: %@", JSONError.localizedDescription);

}

else

{

NSLog(@"Response: %@", dictionary);


NSString *str=[dictionary objectForKey:@"Status"];

tokenVlue=[dictionary objectForKey:@"message"];

NSLog(@"Token Value is :%@",tokenVlue);

NSLog(@"login Status :%@",str);

if([str isEqualToString:@"Success"])

{

HomeViewController *secondViewController =[self.storyboard instantiateViewControllerWithIdentifier:@"homeViewController"];


[self.navigationController pushViewController:secondViewController animated:YES];

}

}

}

else

{

NSLog(@"Error: %@", error.localizedDescription);

}

}];

// Start the task.

[task resume];

}

3 个答案:

答案 0 :(得分:1)

使用Segues作为相同的。控制 - 从LoginViewController拖动到HomeViewController以创建一个segue。为segue提供标识符,例如:"LoginToHomeSegue"。确保segue是Show种。它等于推送视图控制器。 Show Detail等于当前视图控制器。成功登录后,在LoginViewController类中,只需调用以下函数:

self.performSegueWithIdentifier("LoginToHomeSegue", sender: self)

这将为你做到这一点。

答案 1 :(得分:1)

在storyboard中有一个标记Initial View Controller的选项,拖放UINaviagtionController(作为初始视图控制器),LoginViewController应该是它的根视图控制器。从LoginViewController到HomeViewController绘制push segue,并在用户登录时在事件上编写此代码:

[self performSegueWithIdentifier:@"HomeSegue" sender:self];

其中HomeSegue是从LoginViewController到HomeViewController

的segue标识符

答案 2 :(得分:0)

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:**storyboardName** bundle:nil];
HomeViewController *secondViewController =[storyboard instantiateViewControllerWithIdentifier:@"homeViewController"];  
[self.navigationController pushViewController:secondViewController animated:YES];

验证HomeViewController的storyboard id是homeViewController 并给出正确的故事板名称

OR

您可以使用segue参考教程http://www.raywenderlich.com/113394/storyboards-tutorial-in-ios-9-part-2 https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/UsingSegues.html