将NSProgressIndicator的值绑定到控制器有什么意义?除了在启动时,似乎从未向控制器询问该值。移动NSProgressIndicator的唯一方法似乎是通过发送#increaseBy:来绕过我的绑定。那么,为什么我会绑定?!
答案 0 :(得分:5)
如果您的UI绑定值未更新,则意味着您要么修改了绑定,要么您的控制器代码没有以符合键值观察的方式修改绑定值。最常见的问题是fooIvar = val
而不是[self setFooIvar:val]
或self.fooIvar = val
。
Apple对您问题的回答:
[怎么做]以编程方式更改模型属性的值不会反映在用户界面中
如果以编程方式对模型值所做的更改未反映在用户界面中,则通常表示模型对象不符合属性的键值观察,或者您正在以某种方式修改值绕过了键值观察。你应该确保:
- 模型类启用了自动键值观察,或实现了属性的手动键值观察。
- 您正在使用访问器方法或使用符合键值编码的方法更改值。直接更改实例变量的值不会提供键值观察更改通知。
- 如果您的模型属性是一个集合,那么您将以符合键值观察的方式修改内容。有关详细信息,请参阅“My collection controller isn’t displaying the current data”。
对于该答案并回答其他常见问题,请参阅"Troubleshooting Cocoa Bindings."
你也应该看看the examples provided by mmalc.他们是宝贵的资源。