gpt4 book ai didi

cocoa - setter 被覆盖时的双向绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 17:13:52 24 4
gpt4 key购买 nike

我有一个 NSTextField 绑定(bind)到某个对象的“zoom”属性。

在此对象的类实现中,我有以下内容

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

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

然后问题是文本字段不会自行更新,它显示“-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;
}
}

关于cocoa - setter 被覆盖时的双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13078585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com