当setter被覆盖时,双向绑定

我有一个NSTextField绑定到一些对象的“缩放”属性。

在这个对象的类实现中,我有以下几点

- (void)setZoom:(CGFloat)zoom
{
    _zoom = MAX(0, MIN(10, zoom));
}

如果我在文本字段中输入“-5”, setZoom:将以“-5”作为参数调用,_zoom将被设置为0。

然后问题是textfield没有自行更新,它显示“-5”而不是重新读取它刚设置的属性值。

如果我做myObject.zoom = -5; 在代码中,文本字段将正确显示0。

我试图将_zoom = ...包装在willChangeValueForKey / didChangeValueForKey调用中,但它没有改变任何东西。


你可以尝试这样做:

- (void)setZoom:(CGFloat)zoom
{
    CGFloat corectedValue = MAX(0, MIN(10, zoom));
    if (zoom != corectedValue)
    {
        [self setZoom:correctedValue];
    } else {
        _zoom = zoom;
    }
}
链接地址: http://www.djcxy.com/p/85275.html

上一篇: Two way binding when setter is overriden

下一篇: detail application: Binding difficulties