iphone - 从一个 ViewController 导航到另一个 ViewController

标签 iphone objective-c ios xcode storyboard

我的 Storyboard中有这样的设计:

enter image description here

如您所见,中间的 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 后,就无法使用 allocinit 创建 View Controller 。您需要要求 Storyboard来创建它。有几种方法可以做到这一点。

一种方式

让 Storyboard创建 ViewController2 的一种方法是在 Storyboard中创建推送转场。

  1. 打开 Storyboard。
  2. 按住 Control 键并从登录 View Controller 拖动到 ViewController2
  3. 选择“推送”segue 类型。
  4. 点击转场。
  5. 选择“ View ”>“实用程序”>“显示属性检查器”。
  6. 在属性检查器(窗口右侧)中,将 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”。

  1. 打开 Storyboard。
  2. 选择 ViewController2 实例。
  3. 选择“ View ”>“实用程序”>“显示身份检查器”。
  4. 在身份检查器(窗口右侧)中,输入“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/

相关文章:

iphone - Cocos2d iPhone 中的抛射运动

ios - UICollectionView 不重用单元格

ios - shouldChangeCharactersInRange 行为异常

ios - 在 collectionView 的 indexPath.row 获取 UILabel.text

ios: 如何在 ios 中运行 html 数据?

PHP:通过PHP文件下载头响应传递国际文件名给IOS客户端

iphone - 核心数据并发(NSOperation)

objective-c - NSButton 数组

objective-c - 当“重复次数”设置为"is"时,cheduledTimerWithTimeInterval仅触发一次

ios - 在 swift 3 中使用自定义 View 选择多个日期范围