我正在创建一个计算器应用程序作为我在 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()
提前致谢!
最佳答案
感谢所有提供帮助的人,但事实证明它返回 nil
的原因是我正在访问 nil
版本。我正在访问我自己的 ViewController
版本,它没有初始化版本的 equationCacheLabel
。事实证明,如果我访问实际显示在应用程序中的 NSViewController
,它就可以正常工作。这就是我访问 NSViewController
的方式(请注意,我正在创建一个 OS X/macOS Swift 应用程序,这在 i/tv/watchOS 应用程序或 Objective-C 应用程序中不起作用):
(NSApplication.shared().keyWindow?.contentViewController as!ViewController)
这将使您能够访问当前显示的 ViewController 以及您需要的任何 IBActions/Outlets。
关于xcode - 从另一个类更改 IBOutlet 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38046453/