【问题标题】:How to change the value of an item when other item changes in NSTableView?NSTableView中其他item发生变化时如何改变item的值?
【发布时间】:2014-04-21 17:19:13
【问题描述】:

我使用来自 NSArrayController 的绑定填充了这个 NSTableView

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

现在,当用户将 480(列宽)更改为 240 时,我想将高度值也相应地从 270 更改为 185。

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

有人可以帮忙吗?

谢谢

阿南德

【问题讨论】:

    标签: objective-c cocoa binding nstableview nsarraycontroller


    【解决方案1】:

    只需覆盖每个高度和宽度的设置器并更改另一个值。

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

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

    除了覆盖设置器之外,如果您想根据之前的高度或宽度值进行计算,您可以使用options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)observeValueForKeyPath 在两个键路径中注册 KVO 更改,您会得到更改包含旧值和新值的字典,您可以从中计算用户缩放该值的程度并相应地缩放另一个值(同时小心避免在这样做时触发 KVO)。请参阅 KVO 编程指南中的 registering for KVO observing。但是 KVO 更难并且容易出错,所以我会避免它并通过覆盖设置器来保持数据模型的一致性。

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      相关资源
      最近更新 更多