macos - 将连续色井数据传递到第二个 View Controller

标签 macos swift cocoa

我有以下情况:

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

相关文章:

macos - Mac 监听事件 : Copy to Pasteboard

ios - 改变方向时 UIScrollView 的大小

cocoa - 为什么我的新 subview 叠加在我的分割 View 中?

ios - swift 2.2 中字符串的长度(按字节计算)

ios - UIScrollView 里面的 UITextView 不显示长文本

objective-c - 为什么不使用优化 (-O0) 的 NSArray 访问速度比使用 (-O1, -O2, -O3, -Os, -Ofast) 更快?

objective-c - AVAudioUnit(渲染)回调

ruby - 在我的 Mac 上找不到特定的 gem

Node.js - 子进程抛出错误,但在 OS X 下可以在终端中执行命令

xcode - 无法在 OSX 上构建 mercurial - 找不到 Python.h