从另一个类更改IBOutlet的值

时间:2016-06-27 05:25:49

标签: xcode swift macos iboutlet

我正在创建一个Calculator应用程序作为我在Xcode中的第一个项目,我正在尝试实现按键功能。为了做到这一点,我创建了一个Global类,其中包含所有代码,以便我的NSWindow类和我的NSViewController类可以无错误地访问它,因为应用程序取决于更改IBOutlet的文本。但是问题是它返回一个unexpectedly found nil while unwrapping an Optional value,其中包含我目前得到的代码,我真的不知道我还能做到这一点:

这是我从Global类访问IBOutlet的方式:viewInstance.configureLabel(newString: newEquationCacheLabel)

这是访问的内容:

@IBOutlet weak private var equationCacheLabel: NSTextField!

func configureLabel(newString: String) {
    equationCacheLabel.stringValue = newString
}

然后是我的ViewController的全局实例(在类之外声明):let viewInstance = ViewController()

提前谢谢!

1 个答案:

答案 0 :(得分:0)

感谢所有帮助过的人,但事实证明它返回depthimagemouse的原因是我正在访问nil版本。我正在访问我自己的nil版本,该版本没有ViewController的初始版本。事实证明,如果我访问了应用程序中实际显示的equationCacheLabel,它工作得很好。这就是我访问NSViewController的方式(注意我创建了一个OS X / macOS Swift应用程序,这在i / tv / watchOS应用程序或Objective-C应用程序中不起作用):

NSViewController

这将使您可以访问当前正在显示的ViewController,以及您需要的任何IBActions / Outlets。