Xcode 从另一个类更改IBOutlet的值
我正在创建一个计算器应用程序作为我在Xcode中的第一个项目,我正在尝试实现按键功能。为了做到这一点,我创建了一个Xcode 从另一个类更改IBOutlet的值,xcode,swift,macos,iboutlet,Xcode,Swift,Macos,Iboutlet,我正在创建一个计算器应用程序作为我在Xcode中的第一个项目,我正在尝试实现按键功能。为了做到这一点,我创建了一个Global类,其中包含了所有的代码,这样我的NSWindow类和我的NSViewController类都可以无误地访问它,因为应用程序依赖于更改IBOutlet的文本。然而,问题是,在使用当前获得的代码展开可选值时,它会返回一个意外发现的值nil,我真的不知道如何才能执行此操作: 这是我从全局类访问IBOutlet的方式:viewInstance.configureLabel(ne
Global
类,其中包含了所有的代码,这样我的NSWindow
类和我的NSViewController
类都可以无误地访问它,因为应用程序依赖于更改IBOutlet的文本。然而,问题是,在使用当前获得的代码展开可选值时,它会返回一个意外发现的值nil,我真的不知道如何才能执行此操作:
这是我从全局类访问IBOutlet的方式:viewInstance.configureLabel(newString:newequalationcacheLabel)
这就是访问的内容:
@IBOutlet weak private var equationCacheLabel: NSTextField!
func configureLabel(newString: String) {
equationCacheLabel.stringValue = newString
}
然后是我的ViewController的全局实例(在类之外声明):let viewInstance=ViewController()
提前谢谢你 感谢所有帮助过我的人,但它返回nil
的原因是我正在访问nil
版本。我正在访问自己版本的ViewController
,它没有equalationcachelabel
的初始化版本。事实证明,如果我访问了应用程序中实际显示的NSViewController
,它就工作得很好。这就是我访问该NSViewController
的方式(请注意,我正在创建OS X/macOS Swift应用程序,这在I/tv/watchOS应用程序或Objective-C应用程序中不起作用):
(NSApplication.shared().keyWindow?.contentViewController作为!ViewController)
这将使您能够访问当前显示的ViewController,以及您需要的任何iActions/Outlets。感谢所有帮助您的人,但它返回nil
的原因是我正在访问nil
版本。我正在访问自己版本的ViewController
,它没有equalationcachelabel
的初始化版本。事实证明,如果我访问了应用程序中实际显示的NSViewController
,它就工作得很好。这就是我访问该NSViewController
的方式(请注意,我正在创建OS X/macOS Swift应用程序,这在I/tv/watchOS应用程序或Objective-C应用程序中不起作用):
(NSApplication.shared().keyWindow?.contentViewController作为!ViewController)
这将使您能够访问当前显示的ViewController,以及您需要的任何iActions/Outlet。是否因为对象被设置为私有?我不是很确定,但也许这就是为什么它找不到它的原因。可能是因为对象被设置为私有的吗?我不太确定,但也许这就是为什么它找不到它的原因。你能再解释一下吗,或者添加一些示例代码?我正在尝试在macOS上访问swift 5中的IBOutlet,这是我找到的最接近于找到如何实现这一点的答案的地方。您是否能够对此进行更多的解释,或者添加一些示例代码?我正在尝试访问macOS上swift 5中的IBOutlet,这是我找到的关于如何实现这一目标的最接近答案。