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:
方法。
将 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:
方法。