J'ai un UIViewController qui a un UIPopoverController qui a un UINavigationController puis un UIViewController. Comment puis-je de l'enfant UIViewController appeler une méthode (par exemple. - (void) mise à jour) dans le parent UIViewController? essayé de nombreuses combinaisons, mais ne fonctionnait toujours pas.Méthode d'appel dans les contrôleurs parents imbriqués
Répondre
votre enfant:
@interface MyChildController:UIViewController {
MyParentController *parent;
}
@property(nonatomic, assign) MyParentController *parent;
@end
@implementation MyChildController
@synthesize parent;
...
Dans votre contrôleur parent, votre enfant lors de l'instanciation:
MyChildController *newChild = [[[MyChildController alloc] initWithNibName:nil bundle:nil] autorelease];
newChild.parent = self;
...
maintenant dans votre enfant que vous avez une ref à votre parent que vous pouvez utiliser. Par exemple, une méthode dans votre enfant:
- (IBAction)someAction {
[self.parent doSomethingParentsDo];
}
Une approche possible serait d'utiliser NSNotificationCenter. Dans la méthode viewDidLoad:
du ViewController parent, enregistrez-le en tant qu'observateur d'une certaine notification (j'utiliserai @ "DummyNotification" comme nom de notification dans mon exemple). Ensuite, publiez cette notification à partir de la méthode appropriée dans le ViewController enfant. Le résultat ressemblera à quelque chose comme ceci:
ParentViewController.m
- (void) viewDidLoad
{
/* existing code */
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update) name:@"DummyNotification" object:nil];
}
- (void) update
{
//method body
}
ChildViewController.m
//put this line wherever you want the ParentViewController to call -update
[[NSNotificationCenter defaultCenter] postNotificationName:@"DummyNotification" object:self];
Référence: NSNotificationCenter Class Reference
En outre, cette question est étiqueté comme iPhone, mais Apple La documentation de UIPopoverController indique que la classe est utilisée spécifiquement pour l'iPad et ne fonctionnera pas sur d'autres appareils. Cette question est-elle mal étiquetée?
Référence: UIPopoverController Class Reference
- 1. Rspec: tester les contrôleurs imbriqués
- 2. Effectuer une somme avec les contrôleurs imbriqués
- 3. Comment créer deux contrôleurs parents dans Codeigniter?
- 4. iPhone - Vues et contrôleurs imbriqués
- 5. les parents jQuery (de divs imbriqués) classe de changement
- 6. iPhone - appelant une méthode dans le contrôleur de vue parents
- 7. Guice avec les parents
- 8. Les modèles imbriqués lève la méthode non définie Erreur
- 9. Search_array dans les tableaux imbriqués
- 10. Ruby on Rails: méthode Global Helper pour tous les contrôleurs
- 11. plusieurs occurrences dans les tableaux imbriqués
- 12. La globalisation dans les contrôleurs ASP.Net MVC
- 13. Rediriger les parents depuis iFrame
- 14. informations entre les contrôleurs dans ASP.Net MVC-
- 15. Les DataGrids WPF imbriqués
- 16. effacer les flottants imbriqués
- 17. Les appels AJAX imbriqués
- 18. exclure les enfants imbriqués
- 19. contrôleurs de vue imbriqués, où ajouter sous-vue et comment gérer la mémoire
- 20. Comment sélectionner les ID parents
- 21. ASP.NET MVC: Structurer les Contrôleurs
- 22. IIfs imbriqués dans les services de rapports
- 23. Plusieurs événements dans les éléments imbriqués
- 24. Problème avec les panneaux imbriqués dans Java
- 25. Eléments imbriqués statiques dans les rails
- 26. Problème avec marked_for_destruction? dans les attributs imbriqués
- 27. IE Problème d'opacité dans les éléments imbriqués
- 28. opérateur = (T * r) dans les modèles imbriqués
- 29. Gérer les agrégats imbriqués dans DDD
- 30. Recherche de tous les contrôleurs dans l'application
Merci pour votre commentaire! Je sais qu'il y a quelques soucis avec la "séparation des soucis", mais j'ai vraiment besoin d'accéder à une fonction sur mon contrôleur de vue parent. Cherché le web haut et bas pour quelque chose d'aussi simple, merci. – Rail24