xcode - 从另一个类更改 IBOutlet 的值

标签 xcode swift macos iboutlet

我正在创建一个计算器应用程序作为我在 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/

相关文章:

iphone - objective-c 中的可缩放按钮

ios - UIButton 动画问题 - iOS

ios - 添加到 MKMapView 时出现 UILongPressGestureRecognizer 问题

macos - OS X 应用程序菜单栏未显示正确的标题

c++ - 如何设置 scons 输出完整的扩展命令行?

swift - 节点自动向随机方向移动

iphone - 标签栏点击委托(delegate)

Swift 2.1 关闭

ios - Swift 闭包内存使用

macos - QKeySequence::退格键