Ho un NSTextField associato al mio modello. Se modifico il contenuto del campo di testo a livello di codice, il modello non viene aggiornato. So che dovresti update the model instead.Con Cocoa Bindings, la modifica del valore di NSTextField a livello di codice non aggiorna il modello
Ma sto provando ad implementare una sottoclasse NSTextField che riconosce uno scroll mentre il mouse si passa sopra di esso per cambiarne il valore numerico. Ovviamente non ho accesso al modello da questa sottoclasse. Quindi hai qualche suggerimento su come potrei farlo?
SOLUZIONE (grazie a 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];
}
Come ho detto, sto usando i binding. Il valore del campo di testo è associato a una proprietà conforme al KVO del mio oggetto modello. Il mio problema è che il binding aggiorna solo la proprietà dell'oggetto modello quando cambio manualmente il valore del campo di testo, ma non quando è cambiato a livello di codice. – DrummerB
Errore mio, pensavo che gli aggiornamenti programmatici ai controlli associati aggiornassero il modello. Cercherò del codice da pubblicare. – paulmelnikow
Sfortunatamente non è così. Grazie per aver cercato di aiutare! – DrummerB