我使用NSArrayController的绑定
填充了这个NSTableViewhttps://www.dropbox.com/s/igx8ttdfvi2tt09/ss.png
现在,当用户将480更改(列宽)更改为240时,我想要更改高度值,也就像从270更改为185.
这样做的正确方法是什么?
有人可以帮忙吗?
由于
阿南德
答案 0 :(得分:0)
只需覆盖每个高度和宽度的setter,然后更改另一个值。
换句话说,如果高度和宽度都是同一个对象的属性,请setHeight
调用setWidth
等。
最简单的方法是,如果你有第三个属性反映你希望身高和宽度的关系,例如aspectRatio
。
或者,如果要根据之前的高度或宽度值进行计算,可以在options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
和observeValueForKeyPath
中注册两个关键路径中的KVO更改d获取包含旧值和新值的更改字典,您可以从中计算用户缩放值的数量并相应地缩放另一个值(同时小心避免在执行此操作时触发KVO)。请参阅KVO编程指南中的registering for KVO observing。但是KVO更难以容易出错,因此我会通过覆盖setter来避免它并保持数据模型的一致性。