【发布时间】:2013-04-09 23:52:42
【问题描述】:
我有一个 UIView 子类CustomView,它有一个属性CustomObject *model,还有几个IBOutlet 属性。 CustomObject 有两个属性,NSString *title 和 NSString *imageName。当model 中的任何内容发生变化时,我想要一种简单、可扩展的方式来更新CustomView 的各种网点。我觉得应该有一些使用 KVO 的简单方法来做到这一点,但是由于可以将新对象分配给 model,所以我不能只订阅这些通知。
我可以想到一种方法(我以前使用过)是覆盖- (void)setModel:(CustomObject *)model 以重做我的布局并重新订阅该对象的 KVO 键。这是最合理的解决方案,还是我忽略了一些明显的东西?
【问题讨论】:
-
我很清楚,您的 VIEW 有自定义对象属性?我认为这将使编码变得比需要的困难得多。通常你希望 ViewController 能够访问模型并且 IT 更新 View
-
没错。我以这种方式构建它,以便视图清楚地了解它所描绘的模型。也许让视图控制器在视图上分配这些属性会更好。
-
MVC 有很多变体。让视图观察模型的变化并更新自身是许多常见样式之一。
标签: objective-c uiview subclass key-value-observing