3

我正在使用 XCode 4.2 故事板。最初,我有一个 Popover Segue 锚定到嵌入在导航控制器中的 UIViewController 上的 UIButton 上,一切都很好。

现在我需要在执行 segue 之前添加条件行为,所以我做了以下事情:

  • 删除了转场
  • 从 UIViewController 创建了一个新的 segue
  • 从按钮创建了一个 IBAction
  • [self performSegueWithIdentifier:@"mySegue" sender:self]在 IBAction 中调用

该应用程序通过了 prepareForSegue 但随后它会抛出一个 SIGABRT 并记录以下内容

 \*** Assertion failure in -[UIStoryboardPopoverSegue perform], /SourceCache/UIKit_Sim/UIKit-1912.3/UIStoryboardPopoverSegue.m:27

有任何想法吗?我有其他实例可以很好地使用 push segues。这是我一直听到提到的行为不端的弹出窗口的案例吗?

4

1 回答 1

10

也许有点晚了:

锚点定义了您要显示的弹出框的起点,并且未连接到操作。必须设置。

因此,当您想以编程方式调用 popover segue 时,您必须分两步完成:

1. 将 Segue 连接到 ViewController您只需从应该执行 segue 的 ViewController 拖动到目标 ViewController 并选择 Popover。

将 Segue 连接到 ViewController

2. 定义标识符这是从代码中调用执行 segue 所必需的

3. 连接锚点将锚点拖到希望弹出框开始的对象上。在下图中,它是一个 BarButtonItem。注意:这不会自动执行segue!(这样您可以额外执行一些连接到 BarButtonItem 的操作)

连接锚点

4. 从你的代码中调用 segue

    [self performSegueWithIdentifier:@"yourIdentifier" sender:sender];
于 2012-09-05T19:36:44.597 回答