Je tente de présenter un tableViewController intégré dans un NavigationController sur un ViewController intégré dans un NavigationController.Tentative de présentation du contrôleur de navigation sur le contrôleur de navigation "dont la vue ne se trouve pas dans la hiérarchie des fenêtres"
I keep getting the error: that the view controller cannot be presented because it is not in the window hierarchy.
En bref, je suis en train de permettre à un utilisateur de cliquer sur the number of likes
sur un poste et ensuite dirigé vers un TableViewController embarqué dans NavigationController et il ne fonctionne pas.
Pour une raison quelconque, cela fonctionne quand on me présente à partir d'un contrôleur de barre d'onglets quand j'essaie de cliquer sur le même nombre mais pas quand je le fais depuis un contrôleur de navigation. Le code de l'action de cliquer sur le même nombre est la suivante et se trouve dans un fichier rapide des cellules vue de collection:
@IBAction func LikeNumber_tapped(_ sender: Any) {
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LikedByVC2") as? UINavigationController
let tableVC = vc?.viewControllers.first as! LikedByTableViewController
tableVC.postKey = self.postKey
self.window?.rootViewController?.present(vc!, animated: true, completion: nil)
}
Est-il possible de faire ce que je tente? J'ai essayé de rendre la question aussi simple que possible mais faites-moi savoir si je dois en dire plus. Merci d'avance.
Pourquoi fais-tu ça? Pourquoi pas 'self.navigationController? .pushViewController (vc, animé: false)'? ou pourquoi ne pas simplement utiliser un segue? – Paulw11
@ Paulw11 Je ne peux pas utiliser push parce que "self" est une collectionviewcell donc je suis limité aux options que j'ai pour montrer un autre contrôleur de vue. Et je ne sais pas comment une section pourrait m'aider à montrer le contrôleur de vue. – dombad
Ok, si 'self' est une cellule, alors vous devriez utiliser une délégation et le bouton tapera l'événement sur le contrôleur de vue correct afin qu'il puisse être traité. Approche de base [ici] (https://stackoverflow.com/questions/28659845/swift-how-to-get-the-indexpath-row-when-a-button-in-a-cell-is-tapped/38941510# 38941510). Et montrer les contrôleurs de vue est ce que font les télégrammes. – Paulw11