如何在NSTableView中更改其他项目时更改项目的值?

时间:2014-04-21 17:19:14

标签: objective-c cocoa binding nstableview nsarraycontroller

我使用NSArrayController的绑定

填充了这个NSTableView

https://www.dropbox.com/s/igx8ttdfvi2tt09/ss.png

现在,当用户将480更改(列宽)更改为240时,我想要更改高度值,也就像从270更改为185.

这样做的正确方法是什么?

有人可以帮忙吗?

由于

阿南德

1 个答案:

答案 0 :(得分:0)

只需覆盖每个高度和宽度的setter,然后更改另一个值。

换句话说,如果高度和宽度都是同一个对象的属性,请setHeight调用setWidth等。

最简单的方法是,如果你有第三个属性反映你希望身高和宽度的关系,例如aspectRatio

或者,如果要根据之前的高度或宽度值进行计算,可以在options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)observeValueForKeyPath中注册两个关键路径中的KVO更改d获取包含旧值和新值的更改字典,您可以从中计算用户缩放值的数量并相应地缩放另一个值(同时小心避免在执行此操作时触发KVO)。请参阅KVO编程指南中的registering for KVO observing。但是KVO更难以容易出错,因此我会通过覆盖setter来避免它并保持数据模型的一致性。