以编程方式执行 unwind segue

Posted

技术标签:

【中文标题】以编程方式执行 unwind segue【英文标题】:Perform unwind segue programmatically 【发布时间】:2015-12-03 16:06:58 【问题描述】:

目前我有以下情节提要:

UITableViewController -> Segue -> UINavigationController -> Relationship -> UITableViewController

在最后一个 UITableViewController 中,我添加了一个返回按钮,代码如下:

navigationItem.setLeftBarButtonItem(UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "unwind"), animated: true)

let attributes = [NSFontAttributeName: UIFont.fontAwesomeOfSize(30), NSForegroundColorAttributeName: Constants.InterfaceColors.firstHighlightColor] as Dictionary!
let unwindNavigationItem = navigationItem.leftBarButtonItem! as UIBarButtonItem

unwindNavigationItem.setTitleTextAttributes(attributes, forState: .Normal)
unwindNavigationItem.title = String.fontAwesomeIconWithName(FontAwesome.AngleLeft)

据我所知,我必须将文件的所有者连接到情节提要中的出口。我发现,只有在控制器代码中有如下所示的操作时,这才有可能。

@IBAction func unwindToWeekOverview(segue: UIStoryboardSegue) 
        NSLog("unwind to week overview")
        dismissViewControllerAnimated(true, completion: nil)
    

由于我现在不知道如何将按钮的操作直接连接到我的展开操作,所以我添加了 unwind 函数。

func unwind() 
        performSegueWithIdentifier("UnwindToWeekOverview", sender: self)
    

当我现在单击后退按钮时,会调用 unwind 函数,但不会调用 segue。 我错过了什么?

【问题讨论】:

【参考方案1】:

看看这个链接。这是 MIKE WOELMER 写的,他解释得很清楚。

https://spin.atomicobject.com/2014/10/25/ios-unwind-segues/

首先,您需要在目标视图控制器中创建一个 IBAction,如下所示:

@IBAction func goBack(segue: UIStoryboardSegue) 

    print("go back")

然后您只需从按钮连接(控制拖动)到退出插座。在弹出窗口中,您将看到之前添加的功能,只需选择它即可。

【讨论】:

以上是关于以编程方式执行 unwind segue的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式执行Unwind segue?

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

在 unwind segue 之后执行 push segue

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

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

无法以编程方式执行 segue