我有一個基於其他對象吐出一個字符串的對象的實例方法。我可以將此實例方法綁定到字段嗎?將NSTextField綁定到對象實例方法?
回答
創建NSString屬性,打開nib文件並將文本字段的value
綁定到該屬性。然後,您對該屬性所做的任何更改都將反映在文本字段中。
您不必將其設爲@屬性。一個實例方法,只要它沒有參數,就會表現等價。 – ipmcc 2012-01-06 19:16:00
但是,那麼你必須發出你自己的KVO通知,所以不,它不會有相同的行爲。 – 2012-01-06 19:49:57
不正確。嘗試一下。聲明爲: - (NSString *)的值; - (void)setValue:(NSString *)value;並定義爲 - (NSString *)value {return _value; } - (void)setValue:(NSString *)value {if(![_ value isEqualToString:value]){[_value autorelease]; _value = [值保留]; }}我確定在設置值時會得到KVO通知。 – ipmcc 2012-01-06 21:36:32
只有在爲綁定實現相應的setter方法以嘗試將值中的更改寫入to時,才能將getter instance方法綁定到該字段的值。 (對於其他一些綁定類型,不需要setter)
setter是空的。
例如,這是用於跨實例的子樹顯示新項目的數量:
- (NSNumber*) numberOfNewItems
{
NSUInteger total = 0;
for (childItem* ci in self.items)
total += (ci.isNewValue) ? ci.items.count : 0;
return @(total);
}
// Does nothing but allows binding to above to be recalculated
- (void) setNumberOfNewItems:(NSNumber*)number { }
,使一個綁定2路幸福。如果你沒有setter,你會得到與keypath不兼容的錯誤。 (除非你像「標題」或「工具提示」那樣單向綁定 - 不需要setter,但setter可以方便地通過getter來重新計算這些標題和工具提示)
Note該childItems內,然後你可以只是這樣做:
self.isNewValue = NO;
[self.parent setNumberOfNewItems:nil]; // Trigers KVO for binding (does nothing else)
...這比試圖讓父寄存器作爲國際志願者組織觀察員所有的孩子更容易了很多。
如果你想在實例中的其他屬性重新觸發吸氣,你可以添加這個類方法:
+ (NSSet *)keyPathsForValuesAffectingNumberOfNewItems {
return [NSSet setWithObjects:@"items", @"somethingElse", nil];
}
- 1. 將對象實例綁定到窗口小部件實例
- 2. 綁定到運行時對象實例
- 3. 將NSColorWell綁定到NSTextField
- 4. 將NSTextField綁定到NSNumber
- 5. 如何將ListBox的項目綁定到實例對象列表?
- 6. 將UI值綁定到WPF中模型的對象實例
- 7. 無法將對象綁定到ListBox
- 8. 使用nil minValue將NSSlider綁定到NSTextField?
- 9. C#。將對象綁定到對象
- 10. Java:如何將x-times方法附加到對象實例?
- 11. 如何將實例方法連接到我的對象
- 12. 將方法添加到實例化對象
- 13. 將聚合物綁定到對象方法
- 14. 將對象的方法綁定到元素的事件
- 15. 將CheckBox綁定到方法
- 16. 將類實例綁定到控件
- 17. 將對象綁定到另一個對象的正確方法是什麼?
- 18. Mootools - 綁定到類實例和訪問事件對象
- 19. C++中的對象實例化方法
- 20. OpenTok對象的Stubbing實例方法
- 21. 實例化對象的方法
- 22. 數據綁定到C#中的對象 - 新對象/新實例/作業
- 23. 找到對象實例化的地方
- 24. 綁定nsrect和nstextfield
- 25. 將std :: function綁定到不同對象實例的相同函數
- 26. MVC3 ViewResult.ViewData錯誤:'無法找到對象實例的方法'
- 27. 的MonoTouch /對象 - 綁定操作方法
- 28. 將對象實例映射到'this'?
- 29. 如何獲取綁定到Ruby變量的實例方法?
- 30. ILGenerator實例化對象和調用實例方法
不要忘記實現'keyPathsForValuesAffecting'。然後,以符合KVC的方式對所依賴的屬性所做的任何更改將自動觸發觀察該屬性的任何內容(如字段)以再次檢索它。 –
2012-01-06 01:27:58