Ajout d'un binding pour un NSTextField , exposeBinding
Philippe49
Membre
La couleur de fond n'est pas dans l'inspecteur IB des NSTextField.
Suivant la doc StoringNSColorInDefaults, on peut la rajouter par programme ainsi :
1) Sous-classer NSText Field, et dans la méthode +(void)initialize exposer le binding :
#import <Cocoa/Cocoa.h>
@interface MyTextField : NSTextField {
}
@end
#import "MyTextField.h"
@implementation MyTextField
+(void)initialize
{
[self exposeBinding:@backgroundColor];
}
@end
2) Dans un délégué de l'application, installer le binding :
[textField bind:@backgroundColor toObject:[NSUserDefaultsController sharedUserDefaultsController]
withKeyPath:@values.backgroundColor
options:
[NSDictionary dictionaryWithObject: NSUnarchiveFromDataTransformerName
        forKey:NSValueTransformerNameBindingOption]
];
Questions
A quoi sert ce exposeBinding, sachant qu'on peut faire marcher le binding sans cela ?
Sous-classer NSTextField est-il ici nécessaire ?
Suivant la doc StoringNSColorInDefaults, on peut la rajouter par programme ainsi :
1) Sous-classer NSText Field, et dans la méthode +(void)initialize exposer le binding :
#import <Cocoa/Cocoa.h>
@interface MyTextField : NSTextField {
}
@end
#import "MyTextField.h"
@implementation MyTextField
+(void)initialize
{
[self exposeBinding:@backgroundColor];
}
@end
2) Dans un délégué de l'application, installer le binding :
[textField bind:@backgroundColor toObject:[NSUserDefaultsController sharedUserDefaultsController]
withKeyPath:@values.backgroundColor
options:
[NSDictionary dictionaryWithObject: NSUnarchiveFromDataTransformerName
        forKey:NSValueTransformerNameBindingOption]
];
Questions
A quoi sert ce exposeBinding, sachant qu'on peut faire marcher le binding sans cela ?
Sous-classer NSTextField est-il ici nécessaire ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La question se développe ...
Lors d'une déclaration @property, le exposeBinding reste-t-il souhaité ?
Les essais simplistes montrent que mettre ou ne pas mettre le "exposeBinding" ne change rien
Les bindings "officiels" documentés sont automatiquement exposés donc ce n'est valable que si c'est un binding "maison".
En attendant plus d'info de la part d'Apple, je continue à mettre le "exposeBinding" ...