Question

J'ai un NSCell personnalisé (en fait le sous-classement de NSTextFieldCell), qui est utilisé à la fois dans un éditeur autonome, et dans un NSTableColumn (lié aux données de base par NSArrayController). Lorsque l'utilisateur modifie la valeur, je l'appelle -[NSCell setObjectValue:] de mettre à jour la valeur (il est un NSNumber). Cela fonctionne dans l'éditeur autonome, depuis quand il est fait, je mettre à jour manuellement la liaison sur elle.

[self setObjectValue:[NSNumber numberWithInt:newValue]];

Cette étape (mise à jour du champ lié) est manquant lorsque la cellule est dans une NSTableView - la valeur actualisée apparaît alors que l'édition de l'utilisateur (avec le suivi de la souris), mais dès que c'est terminé, la valeur revient automatiquement en persisté valeur.

Le NSTableColumn est lié à une clé de -[NSArrayController arrangedObjects]. Y at-il une sorte d'appel à « commitEditing » ou « updateBinding » que je suis absent? Je ne pouvais pas trouver toutes les fonctions utiles dans la documentation pour NSCell ou NSTableView.

Était-ce utile?

La solution

Pour résoudre ce problème, je mis en œuvre -tableView:setObjectValue:forTableColumn:row: dans ma sous-classe NSArrayController. Je reçois l'exemple de ma sous-classe NSManagedObject de l'argument de ligne, puis attribuer manuellement le nouveau modèle de l'argument ObjectValue. Je ne sais toujours pas pourquoi cela est nécessaire, lorsque les cellules de texte font automatiquement, mais il fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top