我是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.swift
类Path.swift
访问IBOutlet(如何访问当前现有的ViewController实例)。
非常感谢任何帮助。
提前致谢。