将连续色彩数据传递给第二个视图控制器

时间:2015-06-15 20:02:59

标签: macos swift cocoa

我有以下情况:

两个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
    }
}

1 个答案:

答案 0 :(得分:0)

prepareForSegue方法是在两个视图控制器之间创建链接的机会。源视图控制器将其自身设置为目标视图控制器的委托是很常见的。源视图控制器也可以将引用保存到目标视图控制器以供将来参考。

如果使用类似

的方法定义协议

func colorValueHasChanged(newColor:NSColor)

然后你可以在IBAction中使用它来获得你的颜色,以便将颜色变化的信息从一个视图控制器传递到另一个视图控制器。