【问题标题】:Cannot Connect Storyboard Unwind Segue无法连接 Storyboard Unwind Segue
【发布时间】:2012-09-29 08:15:30
【问题描述】:

我正在尝试创建一个 unwind segue,但是当 ctrl+拖动时没有任何东西可以连接到它。此外,当我右键单击退出图标时,没有可用的选项。

有什么想法吗?

【问题讨论】:

标签: ios xcode uistoryboard


【解决方案1】:

您需要在视图控制器上定义一个 IBAction,该控制器采用“UIStoryboardSegue *”类型的参数。

类似这样的:

@interface MyViewController
...
- (IBAction)unwindFromConfirmationForm:(UIStoryboardSegue *)segue {
}
...
@end

Swift 3 版本

@IBAction func unwindToViewController(segue: UIStoryboardSegue) {

    //code

}

DoruChidean提供https://stackoverflow.com/a/46199117/250190

【讨论】:

  • 啊,是的!谢谢,完美运行。这只是定义 UIStoryboardSegue 参数的问题。我把它设置为done:(id)sender
  • 很高兴能帮上忙。存在额外的严格性,因此您项目中的每个操作都不会作为选择。
  • 万一其他人错过了,您可以将它添加到任何视图控制器,它会显示在 EXIT 图标中
  • 我遇到的另一个问题是我没有将展开 segue 方法签名放在我的 .h 文件或类扩展名中。在我添加它之后,展开转场出现在弹出窗口中。
  • @SteveMoser 你不必把它放在 .h 中
【解决方案2】:

澄清一下,为了在情节提要中将其链接起来,在将上述方法添加到“您想要展开的视图控制器”之后,您需要从按钮或您想要展开的“视图控制器中的任何内容”中拖动一个 segue从“到它自己的底部栏中的绿色小“退出”图标。

应该有一个弹出窗口链接到“- unwindFromConfirmationForm”。

一旦完成,展开转场就应该起作用了。


只是补充 Travis 的优点:完全清楚:

假设您刚刚开始尝试使用故事板,因此您 (a) 制作了一个新的 iOS7 Xcode 项目并 (b) 制作了带有一个导航控制器的故事板,然后 (c) 您制作了五六个视图控制器.您的目标是能够使用 unwinds 在六个视图控制器之间进行切换。 {通过控制从一个按钮拖动到下一个按钮来“前进”是微不足道的。}

现在,此时:所有六个视图控制器,确实将是“默认”类“ViewController”。请注意,Xcode(有点毫无意义)为您提供了 ViewController.h 和 ViewController.m 文件。

同样,此时您的所有六个“简单示例”视图确实只是使用该文件 ViewController.m。所以,很简单,如果你添加这个:

-(IBAction)unwindUnused:(UIStoryboardSegue *)segue
    {
    NSLog(@"I did an unwind segway! Holy crap!");
    }

到那个“存根”文件 ViewController.m - 事实上,现在您的六个视图中的每一个都可以“工作”,您将能够拖动到臭名昭著的绿色小“退出” “ 按钮。就这么简单。

现在在实际项目中通常只是 TBC,您永远不会使用默认的“ViewController.m”文件。所以,去这里:

https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/SecondTutorial.html

找到精确的“创建自定义视图控制器”,如果您是新手,它当然会非常详细地解释该过程。

但同样,如果您只是在胡闹,想让绿色按钮用于展开,只需将代码片段放在“ViewController.m”存根文件中,您就可以离开了。 (请记住,在“现实生活”中,您会在每个自定义屏幕中放置一个自定义的此类调用 - 可能处理数据等)希望它有所帮助!

Bonus factoid:请注意,无论如何,当您像这样进行测试时,“返回”按钮会自动出现在导航栏上! (即,即使您不添加 unwind 存根方法。)

【讨论】:

  • 正确。起初 IMO 有点令人困惑,但似乎效果很好。
  • 非常有用的答案;我添加了一些可能对人们有所帮助的信息
【解决方案3】:

为乔恩·赫斯点赞! 这是 swift 3 的等价物

@IBAction func unwindToViewController(segue: UIStoryboardSegue) {

    //code

}

【讨论】:

    【解决方案4】:

    您使用的是 xcode6-beta 版本吗?在 beta 1-3 中是一个错误,它会阻止界面生成器检测展开 segues。在 xcode6-beta4 中,此错误已得到修复。

    【讨论】:

    • 不,这是几年前的事了。方法签名导致了问题。
    • 哦,抱歉没看到那是几年前的事了。无论如何很高兴问题得到解决
    猜你喜欢
    • 1970-01-01
    • 2012-11-07
    • 2014-07-24
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    相关资源
    最近更新 更多