从Swift中的另一个类访问IBOutlet

时间:2015-06-18 08:10:46

标签: macos swift class iboutlet nsviewcontroller

我是Swift和Mac App的新手。 所以今天我正在编写一个Mac应用程序,我仍然在搜索很多内容之后,仍然混淆了如何从另一个类访问IBOutlet。

我使用的是StoryBoard,我的ViewController中有两个NSTextField path mirror。 我为第一个NSTextField Path.swift创建了一个自定义类path,以便知道path中的文字何时发生了变化。

class Path: NSTextField, NSTextFieldDelegate 
{
override func drawRect(dirtyRect: NSRect)
{
    super.drawRect(dirtyRect)
    // Drawing code here.
    self.delegate = self
}
var current = ""

override func controlTextDidChange(obj: NSNotification)
{
    current = self.stringValue
    println("Current is \(current)")
} 
}

ViewController.swift

中定义了两个出口
class ViewController: NSViewController
{

    override func viewDidLoad()
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    override var representedObject: AnyObject? {
        didSet {
        // Update the view, if already loaded.
        }
    }

    @IBOutlet weak var path: NSTextField!

    @IBOutlet weak var mirror: NSTextField!
}

当用户在第一个NSTextField path中输入内容时,我希望第二个NSTextField mirror显示与path相同的字符串。

我尝试使用ViewController().mirror.stringValue = current,但我得到fatal error: unexpectedly found nil while unwrapping an Optional value

经过Google搜索后,我知道我创建了一个新的ViewController实例,而不是访问当前现有的ViewController实例。

所以我的问题是如何从ViewController.swiftPath.swift访问IBOutlet(如何访问当前现有的ViewController实例)。

非常感谢任何帮助。

提前致谢。

0 个答案:

没有答案