我有以下情况:
两个ViewControllers,每个都包含一个框,该框将被着色为从ViewController中的颜色井中拾取的颜色 将颜色井设置为连续,以便立即看到反射的变化 我正在寻找一种方法来不断地将颜色井值传递给SecondViewController,并转向一个回调方法,该方法将为SecondViewController中的一个方框着色。
我发现prepareForSegue方法通常用于在视图控制器之间传递数据,但这只在转换期间发生一次而不是连续发生。
有人能指出我正确的方向吗?谷歌搜索了几个小时,但我真的坚持了这个。
感谢。
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
}
}
答案 0 :(得分:0)
prepareForSegue方法是在两个视图控制器之间创建链接的机会。源视图控制器将其自身设置为目标视图控制器的委托是很常见的。源视图控制器也可以将引用保存到目标视图控制器以供将来参考。
如果使用类似
的方法定义协议func colorValueHasChanged(newColor:NSColor)
然后你可以在IBAction中使用它来获得你的颜色,以便将颜色变化的信息从一个视图控制器传递到另一个视图控制器。