Comment pouvez-vous recharger un ViewController après avoir rejeté un modal présenté-vue-contrôleur de Swift?
J'ai un premier tableViewController qui ouvre un second tableViewcontroller en cliquant sur une cellule. Le second point de vue contrôleur est présenté sous forme modale (Montrer les Détails segue) et est rejeté avec:
self.dismissViewControllerAnimated(true, completion: {})
À ce point, le deuxième point de vue contrôleur de diapositives loin et révèle la première vue-contrôleur-dessous. Je voudrais ensuite pour recharger la première vue-contrôleur. Je comprends que cela peut nécessiter l'utilisation de déléguer des fonctions, mais vous ne savez pas exactement comment le mettre en œuvre
Appel
-reloadData
sur votre UITableView
à l'intérieur de -viewDidAppear
OriginalL'auteur A_toaster | 2015-02-24
Vous devez vous connecter pour publier un commentaire.
Je l'ai résolu un peu différemment puisque je n'en veux pas de dépendance.
Et cette approche est prévu lorsque vous présentez un contrôleur modal, depuis la présentation de contrôleur de l'habitude de recharger lorsque vous fermez le présenté.
De toute façon la solution!
Au lieu de vous faire un Singleton (médiateur)
Avez-vous la Présentation de contrôleur de mettre en œuvre le protocole comme ceci:
et enfin dans votre PresentedViewController dans votre viewDid/WillDisappear func ou personnalisé func ajouter:
OriginalL'auteur Mikael Stenberg
Vous pouvez simplement reaload vos données dans
viewDidAppear:
, mais qui peuvent causer la table pour être actualisé inutilement dans certains cas.Une solution plus flexible, est d'utiliser des protocoles que vous avez bien deviné.
Disons que le nom de la classe de votre première tableViewController est
Table1VC
et le second estTable2VC
. Vous devez définir un protocole appeléTable2Delegate
qui ne contiendra qu'une seule méthode telle quetable2WillDismissed
.Alors vous devriez faire de votre
Table1VC
instance conforme du présent protocole et de recharger votre table au sein de votre mise en œuvre de la méthode du délégué.Bien sûr, pour que cela fonctionne, vous devez ajouter une propriété à
Table2VC
qui va contenir le délégué:et définissez sa valeur à votre
Table1VC
instance.Après avoir défini votre délégué, il suffit d'ajouter un appel à la méthode du délégué juste avant l'appel de la
dismissViewControllerAnimated
dans votreTable2VC
instance.Cela vous donnera un contrôle précis lors de la table aurez rechargé.
Le comportement de l'OS est le même quelle que soit la langue que vous utilisez.
Il semble plus agréable si vous le faites dans le viewWillAppear; que le tableau s'affiche déjà chargé. si vous le faites dans le viewDidAppear; vous aurez la table et après une fraction de temps, il sera chargé. Et oui swift appelle aussi viewWillAppear/viewDidAppear après la destitution de la vue-contrôleur
Musadhikh Muhammed K est droit.
remplacer func viewDidAppear(_ animés: Bool) { // code je veux exécuter } a Fonctionné parfaitement pour moi
OriginalL'auteur Cihan Tek