当以编程方式调用时,Popover Segue崩溃

时间:2012-03-26 17:20:32

标签: ios uistoryboard uistoryboardsegue

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

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

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

应用程序通过prepareForSegue,然后它会抛出SIGABRT并记录以下内容

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

有什么想法吗?我有其他这种工作正常推送segues的情况。这是一个我一直听到参考的行为不端的邮件吗?

1 个答案:

答案 0 :(得分:10)

也许有点晚了:

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

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

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

Connect Segue to ViewController

<强> 2。定义标识符这是调用代码执行segue所必需的

第3。连接锚点您可以将锚点拖动到要从中开始使用弹出窗口的对象。在下图中,它是一个BarButtonItem。注意:这不会自动执行segue! (这样您还可以执行一些连接到BarButtonItem的操作)

Connect the Anchor

<强> 4。从您的代码中调用segue

    [self performSegueWithIdentifier:@"yourIdentifier" sender:sender];