В Cocoa Bindings программное изменение значения NSTextField не приводит к обновлению модели.

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

Но я пытаюсь реализовать подкласс NSTextField, который распознает прокрутку, когда мышь наводит на нее курсор, чтобы изменить ее числовое значение. Очевидно, у меня нет доступа к модели из этого подкласса. Итак, у вас есть какие-либо предложения, как я могу это сделать?

РЕШЕНИЕ (спасибо noa):

- (void)scrollWheel:(NSEvent *)theEvent {
    [self setFloatValue:[self floatValue] - [theEvent deltaY]];
    NSDictionary *bindingInfo = [self infoForBinding: NSValueBinding];
    NSObject *boundObject = [bindingInfo valueForKey:NSObservedObjectKey];
    NSString *keyPath = [bindingInfo valueForKey:NSObservedKeyPathKey];
    [boundObject setValue:[NSNumber numberWithFloat:[self floatValue]]
               forKeyPath:keyPath];
}

5
задан DrummerB 15 May 2012 в 17:49
поделиться