为什么要绑定NSProgressIndicator的值?

nes*_*983 0 cocoa cocoa-bindings

将NSProgressIndicator的值绑定到控制器有什么意义?除了在启动时,似乎从未向控制器询问该值.移动NSProgressIndicator的唯一方法似乎是通过发送#increaseBy:来绕过我的绑定.那么,为什么我会绑定?!

Jer*_*man 5

如果您的UI绑定值未更新,则意味着您要么绑定绑定,要么您的控制器代码没有以符合键值观察的方式修改绑定值.最常见的问题是做fooIvar = val而不是[self setFooIvar:val]self.fooIvar = val.

Apple对您问题的回答:

[如果]以编程方式更改模型属性的值不会反映在用户界面中

如果以编程方式对模型值所做的更改未反映在用户界面中,则通常表示模型对象不符合属性的键值观察,或者您正在以绕过键的方式修改值价值观察.你应该确保:

  • 模型类启用了自动键值观察,或者为属性实现手动键值观察.
  • 您正在使用访问器方法或使用符合键值编码的方法更改值.直接更改实例变量的值不会提供键值观察更改通知.
  • 如果您的模型属性是一个集合,那么您将以符合键值观察的方式修改内容.有关详细信息,请参阅" 我的收集控制器未显示当前数据 ".

有关该答案并回答其他常见问题,请参阅"对Cocoa绑定进行故障排除".

您还应该查看mmalc提供的示例.它们是宝贵的资源.