【问题标题】:Modal UIViewController will not push to next UIViewController模态 UIViewController 不会推送到下一个 UIViewController
【发布时间】:2012-02-18 18:34:51
【问题描述】:

开头的结构如下...

UITabBarController -> UINavigationController(s)

从每个 UINavigationController 中,我都有一个 UIBarButtonItem,它以模态方式呈现一个 UIViewController。

这个 UIViewController 有一个 MKMapView,在多个位置有引脚。单击时,它们会显示带有披露按钮的注释。

在这个 UIViewController 中,我打算在按下注释的公开按钮时推送一个详细信息页面(UITableViewController)。方法 calloutAccessoryControlTapped: 接收到适当的 pin,但转换到下一个控制器失败。

我已经尝试了以下方法的所有组合...

  1. [self.navigationController ...]
  2. [self.parentViewController ...]
  3. [self.parentViewController.navigationController ...]

方法是...

  1. presentModalViewController:
  2. pushViewController:

我已经完成了所有这些,UIViewController 是独立的,并且还嵌入在 UINavigationController 中。

所有这些属性都返回 null...

  1. self.navigationController
  2. self.parentViewController
  3. self.parentViewController.navigationController

这是我第一次将故事板用于 Xcode 项目。我错过了一步吗?

【问题讨论】:

    标签: objective-c ios5 uiviewcontroller uinavigationcontroller storyboard


    【解决方案1】:

    尝试摆脱代码并通过控制从按钮拖动到您希望以模态方式加载的视图控制器来实现情节提要中的过渡。当“Storyboard Segue”菜单弹出时选择“modal”。在模态视图控制器中,我喜欢使用代码通过调用从模态返回:

    [self dismissModalViewControllerAnimated:YES];
    

    在提供的链接上以编程方式滚动到gravityjack 中的该部分,以呈现故事板视图控制器。

    例如,我有一个在故事板中创建的视图控制器,我可以使用以下两个语句以编程方式调用它:

        SettingsViewController *settingsVC = [self.storyboard instantiateViewControllerWithIdentifier:@"settingsVC"];
        [self.navigationController pushViewController:settingsVC animated:YES];
    

    【讨论】:

    • 不幸的是,我正在尝试以编程方式执行此操作。我必须对来自 UIViewController 的大量视图进行 segue 附件,如果将来需要更改某些内容,这将是一个非常大的混乱。谢谢!
    • 我在答案中添加了一个链接,用于以编程方式呈现视图控制器。
    • 这是一本有用的读物​​,但不是我正在寻找的故障排除类型的答案。我在我的代码中推送、弹出和呈现了许多控制器;问题在于这个特定的实例没有正确触发。我想接受这个答案,因为您的回答可能会引导其他人向他们提出这个问题的正确位置,但是,如果出现的答案对我来说是一个更好的方向,我将不得不奖励给别人。再次感谢!
    • 我已经编辑了我的问题,以使我对 push 的意图更加清晰。我不太擅长沟通!抱歉,如果我没有正确询问。谢谢!
    • 通过在单例中存储对所需 UIViewController 的 navigationController 的引用来解决问题。然后在单例中创建一个方法来解除模式视图控制器,并推送到所需的 UIViewController。真是一团糟!如果您有更优雅的解决方案,请继续回答! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2011-05-10
    • 1970-01-01
    相关资源
    最近更新 更多