Parce que NSCells ne répondent pas aux dismissPopUp
messages.
Si vous obtenez cela comme une exception au moment de l'exécution, assurez-vous que button1
est vraiment un bouton pop-up, c'est-à-dire, assurez-vous que vous avez branché cette sortie au bon objet dans IB, ou que vous avez assigné bon objet là si vous l'avez créé dans le code. Dans ce dernier cas, utilisez le débogueur pour examiner la variable.
Si c'est juste un avertissement que vous obtenez du compilateur, c'est probablement parce que cell
est une méthode de NSControl (super-superclasse de NSPopUpButton), et est tapé comme retournant un NSCell. Le compilateur n'a aucun moyen de savoir que ce contrôle particulier retournera un NSPopUpButtonCell. La solution est d'affecter le résultat du message cell
à une variable de type NSPopUpButtonCell *
, puis envoyer le message dismissPopUp
à l'objet dans cette variable:
NSPopUpButtonCell *cell1 = [button1 cell];
[cell1 dismissPopUp];
Si vous obtenez toujours l'avertissement, vous devrez ajouter une distribution explicite devant l'expression [button1 cell]
.