Swift OS X 运行 功能在 return 的 segue

Swift OS X run function on return of segue

将 segues 与 OS X 和 swift 一起使用,是否有一种方法可以从 segue 在 return 上调用?我查看了 NSViewController and NSSeguePerforming 文档,但看不到任何有希望的内容。

没有一个 segue 定义了从 ViewController A 到 ViewController B 的一次转换。 一个 segue 在那个过渡之后没有生命周期。

您必须手动添加该功能 - 例如通过委托模式

所以如果这对其他人有帮助;我制定了某种委托协议:

protocol JNCommunicationDelegate {
    func doAction(sender: AnyObject, message: AnyObject)
}

然后向发送消息的视图控制器添加一个变量:

var communicationDelegate: JNCommunicationDelegate?
func setCommunicationDelegate(delegate: JNCommunicationDelegate) {
    self.communicationDelegate = delegate
}

(一种更 Swift 的方法是不使用 setter.. 但对我而言,Java 太多了。)然后当 segue 开始时在第一个控制器中:

override func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject!) {
    let destination = segue.destinationController as MyViewControllerController
    destination.setCommunicationDelegate(self)
}

然后 运行 来自第二个控制器的 doAction: 方法。