我的 Storyboard中有这样的设计:
如您所见,中间的 ViewController 连接到导航 Controller (我刚刚使导航栏不可见)。在此中间页面中,我以编程方式添加所有控件 ( 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]);
}
将打印该消息,但导航失败。你能帮我吗?也许我需要修复 Storyboard中的某些内容。
最佳答案
我不确定您是否应该发送 dismissModalViewControllerAnimated:
消息。您是否在登录 View Controller 之上以模态方式呈现另一个 View Controller ?
无论如何,当您在 Storyboard 中配置了 View Controller 后,就无法使用 alloc
和 init
创建 View Controller 。您需要要求 Storyboard来创建它。有几种方法可以做到这一点。
一种方式
让 Storyboard创建 ViewController2
的一种方法是在 Storyboard中创建推送转场。
- 打开 Storyboard。
- 按住 Control 键并从登录 View Controller 拖动到
ViewController2
。 - 选择“推送”segue 类型。
- 点击转场。
- 选择“ View ”>“实用程序”>“显示属性检查器”。
- 在属性检查器(窗口右侧)中,将 segue 标识符设置为“didLogIn”。
要执行转场,请执行以下操作:
- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
[self dismissModalViewControllerAnimated:YES];
[self performSegueWithIdentifier:@"didLogIn" sender:self];
}
另一种方式
让 Storyboard创建 ViewController2
的另一种方法是为其提供 Storyboard ID,并要求 Storyboard通过 ID 实例化 View Controller 。然后你可以推送 View Controller 。
在要求 Storyboard创建它之前,您必须为 Storyboard中的 ViewController2
实例提供一个“ Storyboard ID”。
- 打开 Storyboard。
- 选择
ViewController2
实例。 - 选择“ View ”>“实用程序”>“显示身份检查器”。
- 在身份检查器(窗口右侧)中,输入“viewController2”。大小写很重要!
然后,在您的代码中,要求 Storyboard实例化 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];
}
关于iphone - 从一个 ViewController 导航到另一个 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12827147/