我在故事板中有这个设计:
如您所见,中间ViewController连接到导航控制器(我只是让导航栏不可见)。在这个中间页面中,我以编程方式添加所有控件(using Parse mobile platform login wizard)。
当我成功完成登录时,我想要导航到第三页。
- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
[self dismissModalViewControllerAnimated:YES];
ViewController2 *viewController = [[[ViewController2 alloc] init] autorelease];
[self.navigationController pushViewController:viewController animated:YES];
printf("%s", [@"Ali" UTF8String]);
}
将打印消息,但导航失败。你能帮我吗?也许我需要在故事板中修复一些东西。
答案 0 :(得分:2)
我不确定您是否应该发送dismissModalViewControllerAnimated:
消息。您是否在登录视图控制器上以模态方式呈现另一个视图控制器?
无论如何,在故事板中配置视图控制器后,无法使用alloc
和init
创建视图控制器。您需要让故事板创建它。有几种方法可以做到这一点。
让故事板创建ViewController2
的一种方法是在故事板中进行推送。
ViewController2
。要执行segue,请执行以下操作:
- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
[self dismissModalViewControllerAnimated:YES];
[self performSegueWithIdentifier:@"didLogIn" sender:self];
}
让故事板创建ViewController2
的另一种方法是给它一个故事板ID,并要求故事板按ID实例化视图控制器。然后你可以推动视图控制器。
在您要求故事板创建故事板之前,您必须向故事板中的ViewController2
实例提供“故事板ID”。
ViewController2
实例。然后,在您的代码中,请求故事板实例化viewController2
:
- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
[self dismissModalViewControllerAnimated:YES]; // Should this be here?
ViewController2 *viewController = [[[ViewController2 alloc] init] autorelease];
[self.navigationController pushViewController:viewController animated:YES];
}
答案 1 :(得分:1)
试试这种方式,
ViewController2 *myViewController=[storyboard instantiateViewControllerWithIdentifier:@"TheNameOfYourController"]
[self.navigationController pushViewController:myViewController animated:YES];
答案 2 :(得分:0)
由于缺少大量相关代码/设置,我建议如下:
使用此代码:
-(void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
[self dismissViewControllerAnimated:YES completion:NULL];
Class klass = [[NSBundle mainBundle] classNamed:@"ViewController2"];
ViewController2 *viewController = [[klass alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
NSLog("%@", @"Ali");
}
如果这不起作用,请检查您如何初始化ViewController2。
如果所有这些都没有用,请尝试发布更相关的代码。
答案 3 :(得分:0)
使用Storyboard Identifier
移动下一个viewControllernextViewController *objnextViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"nextViewControllerIdentifier"];
[self.navigationController pushViewController: objnextViewController animated:YES];