【问题标题】:UISplitViewController - willShowViewController Not FiringUISplitViewController - willShowViewController 不触发
【发布时间】:2011-08-27 03:32:16
【问题描述】:

我正在转换一个 iPhone 应用程序以在 iPad 上运行。在这种情况下,用户界面是使用界面生成器创建的。根控制器的界面(在索引 0 处),由此布局中的选项卡控制器和导航控制器组成:

  • 标签控制器
  • 导航控制器 1
  • 导航控制器 2
  • 导航控制器 3

我一直在分段实施。当我设置选项卡控制器和导航控制器 1 作为第一步时,一切正常。 willHideViewController & willShowViewController 工作正常。我的界面从 SplitView 正确切换到 Popover。当我添加 Navigation Controller 2 时,willHideViewController 和 willShowViewController 永远不会触发,并且无论 iPad 在模拟器中的方向如何,我都会看到 Popover 控制器。

当我添加第二个导航控制器时,是否需要在界面构建器中绑定其他内容才能使界面正常工作?

【问题讨论】:

    标签: ios ipad uinavigationcontroller uisplitviewcontroller uitabcontroller


    【解决方案1】:

    我猜您已经为第一个导航控制器设置了一个委托,但没有为第二个导航控制器设置一个委托。委托对象将接收类似 willHideViewController 的方法。

    我也不确定拥有多个导航控制器是一种好的风格。视图控制器知道它已被放置在导航控制器中,您可以使用 self.navigationController 访问它。您应该继续在同一个导航控制器上推送视图控制器。或者我可能误解了你想用你的标签控制器做什么。

    【讨论】:

    • 我使用Xcode 4 生成的splitView 模板作为在我的项目中添加iPad 支持的基础。在这个 splitView 模板中,处理 willShowViewController/willHideViewController 的委托是 DetailViewController。我相信这个委托是正确实现的,因为当 RootController 只不过是一个实现了单个选项卡的 tabController 时,一切正常。当我向 RootController 添加第二个选项卡时,事情就会停止工作。当我删除附加选项卡时,一切都会重新开始。
    • 顺便说一句,标签栏中有 3 个导航控制器,每个标签一个。当一个选项卡被选中时,该选项卡的导航控制器最终会推动视图控制器最终选择一个项目。所以,我很确定我正确使用了控制器。此实现可作为 iPhone 应用程序正常工作。当我尝试使 iPhone 界面为 splitView 正常工作时,我只会看到问题。
    • 另外一点信息:导致(根)splitView 出现问题的选项卡是使用 CortDataTableViewController 类实现核心数据表的选项卡,该类可从斯坦福课程材料中获得。当这个类被添加到 nib 时,事情就失败了。删除它,一切正常。
    • 模板创建RootViewController.m,继承自UITableViewController。你是怎么把它变成一个 UITabBarController 的?您可以将头文件更改为@interface RootViewController:UITabBarController
    • 阅读这个堆栈溢出问题:stackoverflow.com/questions/5023695/… -- 这是在这种情况下的修复。就我而言,我没有在核心数据表对象中实现 shouldAutorotateToInterfaceOrientation 方法。在 iPhone 版本中,我更关心学习核心数据而不是实现定位方法。感谢您的帮助!!!
    【解决方案2】:

    这个问题的答案很简单:当你实现拆分视图控制器并且你希望所有的东西都能正确地从纵向切换到横向时,你需要确保所有的界面元素都实现了 shouldAutorotateToInterfaceOrientation纵向和横向布局。

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多