Swift 中 Segue Unwind 的解决方法不触发

Posted

技术标签:

【中文标题】Swift 中 Segue Unwind 的解决方法不触发【英文标题】:Workaround for Segue Unwind in Swift not firing 【发布时间】:2014-07-24 16:59:08 【问题描述】:

我对在此处展开​​ segue 的解决方法感到有些困惑:Xcode 6 Storyboard Unwind Segue with Swift Not Connecting to Exit

segue 尚未触发,我相信我正在按照解决方法中的概述实现它:

1) 视图控制器标头:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@class DetailViewController;

@interface DetailViewController : UIViewController
- (IBAction) unwindToMaster:(UIStoryboardSegue *) segue;
@end

2) Swift 中的控制器:

@objc(DetailViewController)class DetailViewController: UIViewController, UISplitViewControllerDelegate 

    @IBOutlet var detailDescriptionLabel: UILabel
    var masterPopoverController: UIPopoverController? = nil

    @IBOutlet var itemButton: UIBarButtonItem

    @IBAction func unwindToMaster(segue:UIStoryboardSegue) 
        NSLog("unwind baby")
    
[...]

3) 故事板中的链接(作为 XML):

 <barButtonItem key="rightBarButtonItem" title="Item" id="5Nk-ZI-b7r">
                            <connections>
                                <segue destination="aIR-Or-dY2" kind="unwind" unwindAction="unwindToMaster:" id="aWo-Uk-qUQ"/>
                            </connections>
                        </barButtonItem>

4) 我如何重置自定义类:

我转到自定义类侧页,删除“类”文本字段中的所有内容。它默认为 UIViewController。我保存,然后单击下拉菜单并选择 DetailViewController。

segue 没有触发,即它显然没有正确链接到“项目”按钮,但我不知道原因是什么。

我确实实施了上面链接和此链接中概述的解决方案:Workaround for swift unwinding

当然我可能做错了,希望得到一些指导。

【问题讨论】:

您更新到 Xcode 6 Beta 4 了吗?它应该首先解决了需要解决方法的问题,因此您可能根本不需要使用解决方法。 你知道我没有;不知道 v4 已经发布了。我在 3 天前检查过。我会下载它,但我认为这是一个学习混合 Objc 和 Swift 的机会——而且由于我从上面的有效答案中复制了这些步骤,我仍然想了解我做错了什么。有意义吗? 正如您发布的链接中所述,其他人也对解决方法有疑问,它对某些人有效,需要为其他人重新启动 Xcode,而其他人仍然失败。因此,可能是您没有做错任何事情,而问题只是 Xcode、ios 或 Swift 处于测试阶段。 我明白了。会升级。如果您想将您的评论作为答案 - 我认为清晰 re: v4 值得一票。 【参考方案1】:

Xcode 6 Beta 4 修复了 unwind segues 在 Swift 类中找不到函数的问题,因此不再需要实现此解决方法。

【讨论】:

以上是关于Swift 中 Segue Unwind 的解决方法不触发的主要内容,如果未能解决你的问题,请参考以下文章

Swift 以编程方式创建一个 unwind segue

Unwind segue 在 Swift 3 和 iOS 10 中不起作用

在单元测试中以编程方式执行 Unwind Segue

如何在没有动画的情况下执行 unwind segue?

Unwind segue - 返回多个视图

iOS从推送segue中检测unwind segue