【发布时间】:2012-09-29 08:15:30
【问题描述】:
我正在尝试创建一个 unwind segue,但是当 ctrl+拖动时没有任何东西可以连接到它。此外,当我右键单击退出图标时,没有可用的选项。
有什么想法吗?
【问题讨论】:
-
在一个类似的问题上我发布了这个答案:stackoverflow.com/questions/12569316/…
标签: ios xcode uistoryboard
我正在尝试创建一个 unwind segue,但是当 ctrl+拖动时没有任何东西可以连接到它。此外,当我右键单击退出图标时,没有可用的选项。
有什么想法吗?
【问题讨论】:
标签: ios xcode uistoryboard
您需要在视图控制器上定义一个 IBAction,该控制器采用“UIStoryboardSegue *”类型的参数。
类似这样的:
@interface MyViewController
...
- (IBAction)unwindFromConfirmationForm:(UIStoryboardSegue *)segue {
}
...
@end
Swift 3 版本
@IBAction func unwindToViewController(segue: UIStoryboardSegue) {
//code
}
【讨论】:
done:(id)sender。
澄清一下,为了在情节提要中将其链接起来,在将上述方法添加到“您想要展开的视图控制器”之后,您需要从按钮或您想要展开的“视图控制器中的任何内容”中拖动一个 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”文件。所以,去这里:
找到精确的“创建自定义视图控制器”,如果您是新手,它当然会非常详细地解释该过程。
但同样,如果您只是在胡闹,想让绿色按钮用于展开,只需将代码片段放在“ViewController.m”存根文件中,您就可以离开了。 (请记住,在“现实生活”中,您会在每个自定义屏幕中放置一个自定义的此类调用 - 可能处理数据等)希望它有所帮助!
Bonus factoid:请注意,无论如何,当您像这样进行测试时,“返回”按钮会自动出现在导航栏上! (即,即使您不添加 unwind 存根方法。)
【讨论】:
为乔恩·赫斯点赞! 这是 swift 3 的等价物
@IBAction func unwindToViewController(segue: UIStoryboardSegue) {
//code
}
【讨论】:
您使用的是 xcode6-beta 版本吗?在 beta 1-3 中是一个错误,它会阻止界面生成器检测展开 segues。在 xcode6-beta4 中,此错误已得到修复。
【讨论】: