【问题标题】:In an iOS 5 Storyboard, how do you push a new scene to the original view controller from a Popover?在 iOS 5 Storyboard 中,如何将新场景从 Popover 推送到原始视图控制器?
【发布时间】:2011-12-08 20:34:21
【问题描述】:

我正在从一个新的视图控制器创建一个 popoverSegue,并希望将第三个视图控制器推送到原始堆栈上。这就是我创建应用程序的方式:

  1. 创建一个新的Single View Application
  2. 选择Use Storyboards
  3. 选择MainStoryboard.storyboard 文件。
  4. 选择唯一的View Controller,将TitleIdentifier改为initialView,然后选择Editor->Embed In->Navigation Controller
  5. 将两个新的View Controller 对象从对象库拖到画布上
  6. 将新视图控制器的TitleIdentifier 更改为:popoverViewnewView
  7. 将对象库中的Round Rect Button 对象添加到initialViewpopoverView
  8. 将对象库中的Label 对象添加到`newView。
  9. 控制点击initialView中的按钮并拖动到popoverView
  10. 从出现的Storyboard Segues 菜单中选择Popover 选项。
  11. 控制点击popoverView中的按钮并拖动到newView
  12. Storyboard Segues 菜单中选择Push 选项。
  13. 构建并运行。

单击第一个按钮,弹出框出现,但是当您单击弹出框内的按钮时,什么也没有发生(它应该推送新视图但没有。)

想要做的是将它推入Navigation Controller 堆栈,但不知道如何为此设置情节提要。

有什么想法吗?

【问题讨论】:

    标签: ios xcode uipopovercontroller ios5 storyboard


    【解决方案1】:

    听起来应该可以,但如果不尝试以下操作: 1.点击不起作用的segue并给它一个标识符。假设它是 PopoverToNewSegue。

    1. 在弹出视图控制器的实现文件中,添加单击按钮时的操作。

    2. 该函数应返回 void 并添加以下行: [self performSegueWithIdentifier:@"PopoverToNewSegue" sender:self];

    这应该让你的 segue 运行起来。我注意到 segues 并不总是像你期望的那样工作,但是这个对我来说绝对有效。

    【讨论】:

    • 我遇到了同样的问题。我试着像你说的那样调用 performSegueWithIdentifier,但它什么也没做:(
    【解决方案2】:

    您期望UINavigationController 层次结构将自身扩展为呈现的弹出框。它不会。呈现模态视图控制器也是如此。如果你在popoverView 中记录self.navigationController,你会看到它是nil。

    popoverView 嵌入到它自己的UINavigationController 中。请记住,如果您要覆盖 prepareForSegue:sender: 并尝试配置弹出框,则需要从 destinationViewController 获取 topViewController,因为目标现在是 UINavigationController 的实例。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-02
    • 2012-12-22
    • 2012-02-25
    • 2016-11-20
    • 2020-11-24
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多