我有以下情况:
两个 ViewController,每个 ViewController 包含一个框,该框要着色为从 ViewController 中的颜色池中选取的颜色 色井设置为连续,以便立即看到反射(reflect)的变化 我正在寻找一种方法将颜色井值连续传递到 SecondViewController 以及回调方法,该方法将为 SecondViewController 中的框着色。
我发现prepareForSegue方法通常用于在 View Controller 之间传递数据,但是这只在转换期间发生一次,而不是连续发生。
有人能指出我正确的方向吗?在谷歌上搜索了几个小时,但我真的被这个问题困扰了。
谢谢。
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var box: NSBox!
@IBOutlet weak var well: NSColorWell!
@IBAction func well(sender: AnyObject) {
box.fillColor = well.color
}
override func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject?) {
let second = segue.destinationController as! SecondViewController
second.representedObject = well.color
}
}
import Cocoa
class SecondViewController: NSViewController {
@IBOutlet weak var box: NSBox!
override func viewWillAppear() {
// Note that box.fillColor requires box type to be custom
box.fillColor = self.representedObject as! NSColor
}
}
最佳答案
prepareForSegue 方法是在两个 View Controller 之间创建链接的机会。源 View Controller 将自己设置为目标 View Controller 的委托(delegate)是很常见的。源 View Controller 还可以保存对目标 View Controller 的引用以供将来引用。
如果您使用类似的方法定义协议(protocol)
func colorValueHasChanged(newColor: NSColor)
然后,您可以在颜色池的 IBAction 中使用它,将有关颜色池变化的信息从一个 View Controller 传递到另一个 View Controller 。
关于macos - 将连续色井数据传递到第二个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30854016/