2017-10-15 3 views
0

J'ai 3 viewControllers:firebase ignorer recharger la table dans Swift?

VcA: Je lis les données avec des observateurs de la base de données et passe avec segue à VcB. VcB: Je lis les données et les affiche, avec un bouton que j'appelle VcC pour mettre à jour les données passant les données avec segue. VcC: une vue de table statique dans laquelle je mets à jour les données et les sauvegarde. Le problème est que lorsque je rejette après avoir sauvegardé VcC et revenir en VcB toutes les données sont anciennes, même si dans firebase toutes les données sont parfaitement mises à jour.

Dans VCB par exemple j'ai lu le titre comme celui-ci:

var groupName: String? 

que dans didAppear:

Name.title = groupName 

Quoi qu'il en soit, si je vais aussi revenir de VCB à vcc toutes les données de la table sont les anciennes données.

Pour être plus clair:

J'appelle la base de données VcA

enter image description here

cliquez sur le nom dans le tableau et transmettre les données à Vcb, tout va bien pour le moment, le titre et d'autres vars sont ok

enter image description here

maintenant je cliquez sur Modifier et appeler à vcc, la table où je mets à jour les données, faire le changement et enregistrer,

enter image description here

après l'enregistrement, et je vcc rejeter retourner à VCB -> le titre est encore p2 mais pas firebase!

enter image description here

je clique à nouveau sur EDIT pour revenir à vcc (la table d'édition), le titre est l'ancien

enter image description here

Je pense que je dois rappeler données de db .. de toute façon de le faire sans actualiser les données de Firebase?

Je sais que si je retourne à VcA après tout enregistrer est bien, mais je dois vraiment aller à VcB, comment puis-je faire?

Je trouve beaucoup de fils, c'est le plus similaire, mais pas la situation exacte ... Reload tableView after dismiss a viewController

+0

Pouvez-vous fournir le code du VCB où vous essayez de lire les données? – Woof

+0

Utilisez un 'délégué '. Vous pourrez appeler reloadData à partir de VcC lorsque vous retournerez à VcB. – Torewin

+0

@Woof J'ai ajouté comment j'ai lu le code – HaVaNa7

Répondre

0

Si je peux suivre cela correctement.

vcc:

protocol %NAME%Delegate 
{ 
    func reloadData() 
} 


class VcC: UIViewController /*(or table)*/{ 
    var mDelegate : %NAME%Delegate? 


    //in the func you use to dismiss self (VcC) 
    //mDelegate?. reloadData() 

} 

VCB:

class VcB: UIViewController /* (or table)*/,%NAME%Delegate { 
    func reloadData(){ 
     tableView.reloadData() 
     //OR 
     //Observer for Firebase here to gather the new information. Make sure to reset all datasources if you do this. 
    } 
} 
+0

thnx mais dans VcB j'ai un ViewController simple pas une table, la table est dans VcC seulement – HaVaNa7

+0

Cela fonctionnera indépendamment. Je ne savais pas quelle classe ajouter. Cela fonctionnera avec 'view' et 'table'. – Torewin

+0

Je l'ai fait mais quand j'arrive à VcB le titre est toujours l'ancien peut-être un problème avec ma méthode de rejet? _ = navigationController? .popViewController (animé: true) – HaVaNa7