2012-10-25 76 views
1

我有一個綁定到某個對象「zoom」屬性的NSTextField。setter被覆蓋時的雙向綁定

在這種對象的類實現,我有以下

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

如果我寫「-5」,在文本字段,setZoom:將「-5」作爲參數,_zoom將被設置爲0,被稱爲

然後問題是textfield沒有自行更新,它顯示「-5」而不是重新讀取它剛纔設置的屬性值。

如果我在代碼中做myObject.zoom = -5;,文本字段將正確顯示0。

我試圖將_zoom = ...包含在willChangeValueForKey/didChangeValueForKey調用中,但它沒有改變任何東西。

回答

1

你可以嘗試這樣的方式來做到:

- (void)setZoom:(CGFloat)zoom 
{ 
    CGFloat corectedValue = MAX(0, MIN(10, zoom)); 
    if (zoom != corectedValue) 
    { 
     [self setZoom:correctedValue]; 
    } else { 
     _zoom = zoom; 
    } 
} 
+0

這是一樣的包裝_zoom = ...與willChangeValueForKey/didChangeValueForKey電話。這意味着它不起作用。 –