以编程方式执行展开segue

时间:2015-12-03 16:06:58

标签: ios swift uistoryboardsegue unwind-segue

目前我有以下故事板:

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)
    }

当我现在单击后退按钮时,将调用展开功能,但不会调用segue。 我错过了什么?

1 个答案:

答案 0 :(得分:1)

看一下这个链接。这是由MIKE WOELMER和他非常清楚地解释的。

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

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

@IBAction func goBack(segue: UIStoryboardSegue) {

    print("go back")

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