OStack程序员社区-中国程序员成长平台

标题: iphone - 从一个 ViewController 导航到另一个 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 16:51
标题: iphone - 从一个 ViewController 导航到另一个

我的 Storyboard中有这个设计:

enter image description here

如您所见,中间的 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-推荐答案


我不确定您是否应该发送 dismissModalViewControllerAnimated: 消息。您是否在登录 View Controller 之上以模态方式呈现另一个 View Controller ?

无论如何,当您在 Storyboard 中配置了 View Controller 时,您无法使用 allocinit 创建 View Controller 。您需要询问 Storyboard 来创建它。有几种方法可以做到这一点。

一种方式

让 Storyboard 创建您的 ViewController2 的一种方法是在 Storyboard 中进行推送。

  1. 打开您的 Storyboard。
  2. Control-从登录 View Controller 拖动到 ViewController2
  3. 选择“推送”segue 类型。
  4. 点击转场。
  5. 选择 View > 实用工具 > 显示属性检查器。
  6. 在 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”。

  1. 打开您的 Storyboard。
  2. 选择 ViewController2 实例。
  3. 选择 View > 实用程序 > 显示身份检查器。
  4. 在 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4