我認爲我有NSTextField
。它的值綁定到我的控制器中的NSNumber *number
。控制器只需調用模型(value
)即可獲得適當的值。如何通過控制器連接模型到使用綁定進行查看?
// In the controller
- (NSNumber *)number {
return [NSNumber numberWithFloat:[model value]];
}
- (void)setNumber:(NSNumber *)aNumber {
[model setValue:[aNumber floatValue]];
}
這是細,只有控制器沒有被通知的模型的變化,從而,改變模型中的不更新NSTextField
的值。
我能想到的唯一的其他選擇是讓模型通知控制器和控制器手動通過出口更新視圖。但是這規避了約束。
// In the model, after value change
[[NSNotificationCenter defaultCenter] postNotificationName:@"ValueChanged" object:self];
// In the controller, after being notified
- (void)updateView:(NSNotification *)aNotification {
[myTextField setFloatValue:[model value]];
}
是否有更好的綁定感知的方式來實現此通信?
綁定到模型中是個好主意嗎?我對此有一種奇怪的不好的感覺,我無法解釋。 – bastibe 2010-03-18 12:16:59
好吧,它不是綁定。這是KVO。綁定建立在KVO之上,但KVO是獨立的。我不知道這是一個好主意還是一個壞主意。 KVO只是一個工具。 我喜歡讓我的控制器觀察我的視圖,因爲它感覺不太適合我。該模型甚至不必知道控制器存在。 我確定存在替代觀點。 – 2010-03-18 18:41:20