Je n'arrive pas à référencer un contrôleur de vue d'un autre. Le code fonctionne mais j'ai des avertissements qui me font penser que je vais mal. J'essaye de recharger les données dans un tableView
dont controller
est dans un NavigationController
.
Quel est le problème avec un message comme celui-ci:Traverser la hiérarchie ViewController correctement?
De l'AppDelegate:
[self.tabBarController.selectedViewController.topViewController.tableView reloadData];
Bien que cela fonctionne, je reçois l'avertissement request for member 'topViewController' in something not a structure or union
parce Xcode ne sait pas que le selectedViewController
retournera un navigationController
. Donc, je pouvais faire ce qui suit:
UINavigationController *myNavigationController = self.tabBarController.selectedViewController;
[myNavigationController.topViewController.tableView reloadData];
Mais j'obtenir cet avertissement: incompatible Objective-C types initializing 'struct UIViewController *', expected 'struct UINavigationController *'
Jusqu'où dois-je aller avec ça? La première ligne fonctionne. Pour arriver à la "bonne manière", est-ce que ça va prendre 8 lignes de code?
Je vois ce que vous voulez dire. L'événement qui initie cette action est un fichier transmis à l'application depuis une autre application via 'application: handleOpenURL'. Si je décide d'appeler une méthode dans mon tableViewController pour la laisser gérer cette action (ce qui semble une bonne idée). Je dois toujours référencer le 'tableViewController' de la' AppDelegate' une fois. Je rencontre souvent ce dilemme, pas seulement par rapport à ce problème. Il semble que je stocke constamment un objet comme une propriété dans une autre au point où c'est juste une toile d'araignée. C'est pourquoi j'essayais cette ligne de code initiale, pour éviter cela. – Andrew