2010-03-01 5 views
1

J'ai créé une vue personnalisée à laquelle j'ajoute un bouton personnalisé. Cette vue personnalisée va comme une sous-vue à encore une autre vue (calendrier Kal pour iPhone) que je pousse dans un contrôleur de navigation. Maintenant, le bouton de ma vue personnalisée est connecté à un IBAction dans lequel je ne suis pas en mesure d'appeler self.navigationController pour faire apparaître la vue actuelle.Utilisation du contrôleur de navigation de superview

J'ai essayé le [[sender superview] navigationController] pour une hiérarchie d'appels superview mais cela ne fonctionne pas non plus.

Des idées s'il vous plaît?

Merci

Répondre

3

Une vue n'a généralement pas connaissance de son contrôleur de vue (et, par conséquent, à son ou son contrôleur de navigation du contrôleur de vue de superview) car cela introduirait un couplage étroit entre la vue et contrôleur de vue qui est généralement indésirable et inutile. Le moyen le plus simple de résoudre votre problème serait d'avoir le contrôleur de vue au lieu de la vue gérer l'action du bouton. Si cela ne fonctionne pas pour votre conception, envisagez de concevoir un protocole de délégué pour votre vue personnalisée et faites de votre contrôleur de vue le délégué de la vue personnalisée. La vue appelait alors la méthode déléguée dans la méthode d'action du bouton. Cette dernière méthode est souvent utilisée dans tout le cacao, par ex. par UIScrollView (UIScrollViewDelegate) et UITableView (UITableViewDelegate).

+0

Ma vue personnalisée possède son propre contrôleur de vue. Je ne comprends pas votre point disant que le contrôleur de vue au lieu de la vue gère l'action du bouton. Pouvez-vous élaborer sur ce point? Merci beaucoup – msk

+0

Merci bien Ole, votre idée de délégué a aidé. Un peu de googling, et bam! – msk

Questions connexes