Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 从另一个类更改IBOutlet的值_Xcode_Swift_Macos_Iboutlet - Fatal编程技术网

Xcode 从另一个类更改IBOutlet的值

Xcode 从另一个类更改IBOutlet的值,xcode,swift,macos,iboutlet,Xcode,Swift,Macos,Iboutlet,我正在创建一个计算器应用程序作为我在Xcode中的第一个项目,我正在尝试实现按键功能。为了做到这一点,我创建了一个Global类,其中包含了所有的代码,这样我的NSWindow类和我的NSViewController类都可以无误地访问它,因为应用程序依赖于更改IBOutlet的文本。然而,问题是,在使用当前获得的代码展开可选值时,它会返回一个意外发现的值nil,我真的不知道如何才能执行此操作: 这是我从全局类访问IBOutlet的方式:viewInstance.configureLabel(ne

我正在创建一个计算器应用程序作为我在Xcode中的第一个项目,我正在尝试实现按键功能。为了做到这一点,我创建了一个
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,这是我找到的关于如何实现这一目标的最接近答案。