我的 Storyboard中有这个设计:
如您所见,中间的 ViewController 连接到一个导航 Controller (我只是让导航栏不可见)。在这个中间页面中,我以编程方式添加了所有控件 (using Parse mobile platform login wizard)。
问题是我想在登录成功后导航到第三页。
- (void)logInViewControllerPFLogInViewController *)logInController didLogInUserPFUser *)user {
[self dismissModalViewControllerAnimated:YES];
ViewController2 *viewController = [[[ViewController2 alloc] init] autorelease];
[self.navigationController pushViewController:viewController animated:YES];
printf("%s", [@"Ali" UTF8String]);
}
消息将被打印,但导航失败。你能帮我吗?也许我需要在 Storyboard中修复一些东西。
Best Answer-推荐答案 strong>
我不确定您是否应该发送 dismissModalViewControllerAnimated: 消息。您是否在登录 View Controller 之上以模态方式呈现另一个 View Controller ?
无论如何,当您在 Storyboard 中配置了 View Controller 时,您无法使用 alloc 和 init 创建 View Controller 。您需要询问 Storyboard 来创建它。有几种方法可以做到这一点。
一种方式
让 Storyboard 创建您的 ViewController2 的一种方法是在 Storyboard 中进行推送。
- 打开您的 Storyboard。
- Control-从登录 View Controller 拖动到
ViewController2 。
- 选择“推送”segue 类型。
- 点击转场。
- 选择 View > 实用工具 > 显示属性检查器。
- 在 Attributes Inspector(窗口右侧)中,将 segue 标识符设置为“didLogIn”。
要执行转场,请执行以下操作:
- (void)logInViewControllerPFLogInViewController *)logInController didLogInUserPFUser *)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 > 实用程序 > 显示身份检查器。
- 在 Identity Inspector(窗口右侧)中,输入“viewController2”。案例很重要!
然后,在您的代码中,要求 Storyboard 实例化 viewController2 :
- (void)logInViewControllerPFLogInViewController *)logInController didLogInUserPFUser *)user {
[self dismissModalViewControllerAnimated:YES]; // Should this be here?
ViewController2 *viewController = [[[ViewController2 alloc] init] autorelease];
[self.navigationController pushViewController:viewController animated:YES];
}
关于iphone - 从一个 ViewController 导航到另一个,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/12827147/
|