在Interface Builder中,如何通过另一个类绑定到类的属性?

时间:2016-01-22 13:34:54

标签: objective-c interface-builder cocoa-bindings cocoa-design-patterns

Objective-C中的OSX桌面ap ...

我认为这是一个基本问题,但即使花了很多时间在KVO指南和各种相关问题之后,我仍然可以完全围绕这个特殊情况下的情况进行整理。 (或者,这只是糟糕的形式,我应该停止)

  1. 创建一个自定义类,让我们调用它" OtherClass"给它一个属性:

    @interface OtherClass : NSObject{}
    @property NSString* aString;
    
  2. 在ViewController中,创建此自定义类的实例

    oc = [[OtherClass alloc] init];
    
  3. 在与ViewController类关联的界面构建器中,绑定一个字段,如下所示:enter image description here

  4. 我想要发生的事情是,无论何时调用[oc setAString:@" SomeValue"]等内容,都会更新UI,但是当值发生变化时,文本字段不会更新。

    对于它的价值,实际用例是一个单例类,它是外部硬件的管理器。我希望能够将我的程序的其他部分(例如,硬件代码内部)更新硬件状态更改时的状态字符串。如果我可以将UI字段绑定到" viewController.hardwareMgr.status"那将是非常好的。然后调用" [hardwareMgr setStatus:@" allGood"]"我喜欢的任何地方,并完成它。

    我从概念上理解问题是笔尖没有收到更新通知,但我不确定解决此问题的最佳方法。我当然可以在viewController上手动注册一个监听器,并且可以将它用于"代理"更新到viewController上的本地属性,但这看起来很尴尬。由于我的经理类是单身人士,我还可以创建另一个"实例"在IB内部并绑定到此,但由于不同的原因这似乎很尴尬,不适用于非单身案例。

    如何实现这一目标,或者这种模式只是一个坏主意?

0 个答案:

没有答案