objective-c - 从另一个类方法更新 UI - Cocoa

标签 objective-c cocoa macos user-interface

我想从 AppDelegate 更新我的应用程序中的 UI,但每当我这样调用它时:

Controller *object = [[Controller alloc] init];
[object methodHere];

它似乎没有更新 UI。我在这里做错了什么?我已经放入一个 NSLog 来查看它是否被调用,它确实被调用了。 Here是一个显示错误的示例项目。

编辑:谁能告诉我要对我提供的项目进行哪些更改。我只是不知道要在我的项目中输入什么,以便我可以更改另一个类的简单 NSTextField 的值。

最佳答案

当您编写 [[Controller alloc] init] 时,您并没有访问 nib 中的 Controller 对象。您正在创建一个新的 Controller 对象,它未连接到应用程序中的任何其他对象。

请记住,每个 Controller 对象都不相同,正如每个 NSArray 都不相同一样。仅仅因为您在 Nib 中创建了一个连接到 NSTextField 的 Controller 并不意味着您刚刚创建的某个随机 Controller 共享该 Controller 的连接。

您需要做的是为委托(delegate)提供对 nib 中 Controller 的引用。

关于objective-c - 从另一个类方法更新 UI - Cocoa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5082018/

相关文章:

objective-c - 枚举对象与选项 :usingBlock: causing frequent unexplained freezes

ios - 事件指示器未出现

ios - 模拟器和 iPhone 6 plus 上的 iphone 套接字流缓冲区不同?

iphone - Objective-C 中的内存管理

objective-c - 查找 Mac OSX 序列号

swift - 为什么不能在方法中刷新文本字段?

ios - UISegmentedControl:如何在使用自定义图像时不突出显示已选择的片段

iOS 创建多列表格/网格

swift - 终端命令不适用于 Swift

macos - 在 OSX 中,访问(可选?) NSView 子类的属性 "identifier"会导致访问错误