Какао автоматически обновляет значения словаря из NSTextField - PullRequest
2 голосов
/ 31 марта 2011

Прямо сейчас у меня есть словарь, содержащий строковое значение и NSTextField в моем интерфейсе.Однако, чтобы обновить это значение, мне нужно нажать кнопку, которая затем запускает код обновления.Как я могу заставить его динамически обновлять каждый раз, когда значение текстового поля изменяется?

1 Ответ

2 голосов
/ 31 марта 2011

Изучите использование привязок какао .

Они предназначены для синхронизации вашего представления (NSTextField) с вашей моделью (словарем) без написания всего промежуточного кода. Их немного сложно освоить, но как только вы их поймете, они будут очень полезны.

В вашем случае вы бы привязали привязку «value» NSTextField к свойству в вашем коде.

Альтернативой является настройка NSTextFieldDelegate и реализация:

- (void)controlTextDidChange:(NSNotification *)aNotification

чтобы изменить значение в словаре. Например,

- (void)controlTextDidChange:(NSNotification *)aNotification {
   [myDictionary setValue:[myTextField stringValue] forKey:@"MYDictionaryKey"];
}

Теперь, когда пользователь изменяет текст в NSTextField, текстовое поле запускает этот обратный вызов своему делегату. Таким образом, вы можете убедиться, что словарь всегда имеет то же значение, что и то, что отображается на экране.

Если вы хотите, чтобы изменения вступили в силу только после того, как пользователь завершил редактирование, вы должны реализовать:

- (void)controlTextDidEndEditing:(NSNotification *)aNotification
...