[Résolu] Où sont les IBOutlets de mon customViewController?
berfis
Membre
Bonjour,
J'ai manqué une marche, mais laquelle?
- Je dérive NSViewController: DoorController, avec nib associé.
- Je déclare le File's Owner de ce nib comme étant DoorController.
- J'ajoute un @property (assign) IBOutlet NSLevelIndicator *gauge à ma classe.
... pas d'outlet "gauge" disponible dans l'inspecteur quand je clique-droite sur mon File's Owner.
ça devrait marcher pourtant. Je ne pige pas. On n'est pourtant pas lundi... ???
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Euh... j'ajoute un cube bleu dans le nib, je le déclare comme étant un DoorController, et les outlets apparaissent.
Du coup je clique-droite sur mon File's Owner... et les outlets apparaissent aussi!
Je soumets à Apple?
NSViewController dérive de NSResponder et possède les méthodes liées aux évènements de la souris, mais il ne dérive pas de NSControl. Le problème vient de là très certainement... Tu peux réécrire la méthode "drawRect" d'un NSButton au besoin.
Nan, nan... Rien n'empêche un viewController dérivé d'avoir des IBOutlets supplémentaires.
Mettons que la vue principale (IBOutlet view prédéfini) contienne un bouton. Dans le nib créé par Xcode, je dois pouvoir exécuter une action en direction du File's Owner, qui est mon contrôleur dérivé, si ce File's Owner est déclaré dans IB comme contrôleur dérivé. Lors du chargement du nib, mon instance remplace ce "placeholder" qu'est le File's Owner.
Surtout, je ne vois pas pourquoi IB refuse de reconnaà®tre mon contrôleur dérivé en tant que File's Owner tant que je n'ai pas ajouté un cube bleu (custom Object), déclaré comme contrôleur dérivé. Et que par la suite ça marche... et ça continue à marcher même si je supprime le cube bleu. C'est ça qui me fait dire qu'il y a peut-être un bug (léger, temporaire mais déconcertant) dans Xcode...
Peut être en lui mettant une variable d'instance IBOutlet du même type et du même nom la verrait il mieux (ou plus vite). Ne pas oublier non plus d'enregistrer le fichier. Xcode "parse" en temps réel et donc on voit les changements en temps réel aussi mais parfois il est un peu long. Essayer de faire un nettoyage (Menu Project->Clean) peut parfois aussi améliorer ce genre de comportement déconcertant de Xcode, ça m'est déjà arrivé.
Sinon je viens d'essayer chez moi sur un cas comme le tien avec MyView dans un nib dont le file owner est MyViewController > ajout d'une @property (assign)IBOutlet NSTextField *testField; => testField est présent dans les outlets de FileOwner du nib MyView.xib.
Sans variable d'instance et sans enregistrer. Essaye peut être de faire un "Clean build" voire si ça améliore les choses, ou de fermer tout et tout rouvrir (jusqu'à la session utilisateur si nécessaire).
Des fois il vaut mieux repartir d'un bon pied, surtout quand on a beaucoup travaillé et modifié un projet.
Mmmh... En l'occurrence je crois que ce qui l'a troublé c'est que l'IBOutlet d'une classe dérivée pointait lui-même sur une classe dérivée. Pauvre Xcode. Je le ménagerai davantage à l'avenir...
A part ça merci pour ces conseils toujours utiles, on peut même ajouter "Relancer Xcode", cela m'a même été nécessaire une fois, ainsi que "Redémarrer" si vraiment on ne sait plus où on en est.
Dernière chose à propos du "Clean": il est nécessaire quand on bosse avec Core Data et qu'un utilitaire comme DropBox ou Cubby commence à générer des conflits dans le fichier modèle ou même zappe les modifications -- pas évident à détecter ce genre de choses...
Remarque ça reste Mac OS : un redémarrage suffit. Je connais un autre OS où la solution est parfois de ré-installer Windows , ça ne m'est jamais arrivé avec un Mac