Modifié par souci de concision:objets Nib (subviews) l'accès aux propriétés dans ViewController
Comment propriétés d'accès dans son sous-vue superview et son contrôleur de vue de superview? Assez facile pour descendre la chaîne. Comment pouvons-nous remonter?
Original post (bavard):
Le problème immédiat, je suis en train de résoudre est de simplifier la « naissance » d'un point de vue quelque peu complexe. La grande image a à voir avec les Nibs et comment les sous-classes (de UIView en particulier) qui ont dépassé les initialiseurs triviaux sont reconstituées quand la vue se charge.
J'ai quelques UIViews personnalisés - sous-vues d'une sous-vue de la vue de mon viewcontroller. Quand j'instancie ces vues en particulier, elles ont besoin d'une référence à certaines propriétés (NSNumberFormatter, & NSDictionary) du View Controller.
CurrentY J'utilise une méthode pour les instancier:
- (id)initWithFrame:(CGRect)frame items:(NSDictionary *)dictionary forEditingMode:(EditingMode)mode
J'expérimente avec les déplacer dans un Nib de les laisser se reconstituer et courir dans des problèmes de conception de base. Un être je pense que je suis limité à initWithFrame comme l'initialiseur par défaut?!? Si oui, comment ces objets peuvent-ils regarder dans le contrôleur de vue parent et obtenir une référence au dictionnaire et à d'autres propriétés?
Existe-t-il des méthodes que je pourrais appeler dans initWithFrame (similaires à celles qui récupèrent le délégué UIApplication) mais qui permettraient à la vue enfant d'envoyer des méthodes à ses vues parents et/ou contrôleurs?
Envoyez la police MVC, je suis sûr que je vais casser quelque chose ...
Donc vous dites mettre une IBOutlet dans ces sous-vues qui pointe vers le superview ou le viewcontroller? Je n'ai pas rencontré cela avant ... est-ce assez commun? – Meltemi
C'est essentiellement le modèle de délégué.Vous donnez à la sous-vue une sortie nommée 'delegate', et un protocole de délégué (historiquement, ce serait informel, bien que vous puissiez maintenant utiliser un protocole formel avec des méthodes optionnelles). Ensuite, vous rendez la vue d'ensemble conforme au protocole. Enfin, vous le définissez comme délégué, soit dans IB, soit avec un message accesseur. –
Yup, comme Peter l'a dit, votre contrôleur de vue devient essentiellement un délégué pour la sous-vue. Assurez-vous d'en faire une propriété 'assign' ou vous obtiendrez un cycle de conservation. –