24

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

在此处输入图像描述

有任何想法吗?

4

4 回答 4

67

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

像这样的东西:

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

斯威夫特 3 版本

@IBAction func unwindToViewController(segue: UIStoryboardSegue) {

    //code

}

DoruChideanhttps://stackoverflow.com/a/46199117/250190提供

于 2012-10-09T04:16:03.803 回答
19

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

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

完成后, unwind segue 应该可以工作。


只是添加到 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”存根文件中,然后你就走了。(请记住,在“现实生活”中,您会在每个自定义屏幕中放置一个自定义的此类调用 - 可能处理数据等)希望它有所帮助!

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

于 2012-10-11T16:14:41.843 回答
1

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

@IBAction func unwindToViewController(segue: UIStoryboardSegue) {

    //code

}
于 2017-09-13T13:38:00.837 回答
0

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

于 2014-07-31T08:19:42.400 回答