2

J'ai créé un UISearchDisplayController qui utilise un UITableViewController distinct comme délégué pour afficher les résultats de la recherche. Dans ce contrôleur de vue, j'ai la méthode « didSelectRowAtIndexPath » qui alloue et initialise un detailViewController utilise alors:Impossible de pousser le contrôleur de vue depuis le délégué UISearchDisplayController

[[self navigationController] pushViewController: detailViewController animated: YES]; 

pour le pousser sur la pile. Cependant, cette ligne ne fonctionne pas. Quand une cellule est engagée, rien ne se passe. 'didSelectRowAtIndexPath' est appelé, mais l'appel de la méthode 'pushViewController' ne fonctionne pas. Ne suis-je plus dans le contexte de ma navigationController? Comment puis-je résoudre ce problème?

Toute aide serait grandement appréciée.

+0

On dirait que [auto NavigationController] est nul. Faire un point d'arrêt dans le code et voir si c'est effectivement nul. S'il est nul alors vous devez trouver quel contrôleur de vue est réellement dans le contrôleur de navigation et l'appeler là. – vakio

+0

J'avais ce problème avec le nouveau UISearchController et cela m'a aidé à le résoudre: https://twitter.com/marcoarment/status/506609645335904257, devait avoir self.definesPresentationContext = true dans le contrôleur de la vue principale. –

Répondre

3

Le contrôle de navigation de votre table est probablement le mauvais, je pense que vous pourriez vouloir le pousser sur le navigationController de votre UISearchDisplayController. Pour ce faire, vous pouvez créer un protocole dans votre tableviewcontroller avec une méthode "pushViewController" par exemple et demander à UISearchDisplayController de l'implémenter.

Ensuite, votre registre ce délégué à votre avis de la table et que vous appelez votre délégué sur pushViewcontroller dans votre « didSelectRowAtIndexPath »