2009-06-02 4 views
2

J'ai un NSPopUpButtonCell dans une coutume NSCell et je suis en utilisantNSPopUpButtonCell intérieur sur mesure NSCell ne change pas la sélection lorsque l'option est sélectionnée dans le menu

- (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView 

pour produire le menu contextuel lorsque l'on clique dessus.

J'ai également remplacé copyWithZone: dans ma cellule personnalisée pour copier la variable d'instance popUpCell afin que chaque ligne de ma vue de table possède sa propre cellule pop-up. Mon problème est que, bien que le menu s'ouvre très bien, et vous pouvez sélectionner un élément du menu, quand un élément est sélectionné la cellule ne change pas son élément sélectionné pour correspondre à celui choisi dans le menu. Cependant, si je commente la ligne en copie avec la zone qui copie la cellule, alors elle se comporte correctement jusqu'à la sélection (en changeant pour correspondre à l'élément sélectionné, bien que chaque ligne ait alors le même élément sélectionné) .

Est-ce que quelqu'un sait pourquoi c'est, ou plus exactement, comment je peux le réparer?

+0

Etes-vous conscient du fait que NSTableView ne crée pas de copie de la cellule de NSTableColumn pour chaque ligne, mais réutilise une instance? –

Répondre

0

Avez-vous essayé d'utiliser

–trackMouse:inRect:ofView:untilMouseUp: 

au lieu de

startTrackingAt:inView: 

?

0

Je vous suggère de ne pas copier la cellule et en utilisant plutôt le:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

... méthode déléguée à mettre en place la cellule avec les données correctes avant chaque ligne est tracée.

+0

Ce que je fais réellement utilise des liaisons avec un NSArrayController, qui semble faire une copie de l'unique cellule de temps en temps. Je n'appelle pas manuellement [copie de cellule] moi-même à tout moment. –

Questions connexes