2017-09-12 2 views
0

J'ai une vue tabulaire avec un contrôleur de navigation intégré. J'ai ajouté un bouton UIBarButtonItem (ajouter). Lorsque je clique sur ce bouton, il ouvre une nouvelle vue où l'utilisateur saisit les données et les soumet (qui effectue un appel de service Web) et revient à la vue précédente. Cette navigation se passe comme indiqué ci-dessous,IOS swift UIBarButtonItem action

func addTapped(_ sender:UIBarButtonItem) { 
    print("Called Add") 
    let vc = (storyboard?.instantiateViewController(withIdentifier: "newNote")) as! newNoteVC 
    self.navigationController?.pushViewController(vc, animated: true) 
} 

Et dans la nouvelle vue, je ne suit,

@IBAction func saveButton(_ sender: UIButton) { 
    if (self.noteDescription.text?.isEmpty)! { 
     print("Enter missing note description") 
     return 
    } else { 
     let desc = self.noteDescription.text 
     self.uploadNote(noteText: desc!, noteDate: self.dateInMilliseconds) 
     self.navigationController?.popViewController(animated: true) 
    } 
} 

De cette façon, un dossier est enregistré et une vue obtient sauté de la pile du contrôleur de navigation, mais seule chose que je don 't comment faire est d'actualiser les données de vue de table dans la vue parent (où je pourrais avoir besoin de faire un nouvel appel de service http pour lire tous les enregistrements).

J'espère pouvoir expliquer le problème? Toute aide est appréciée.

+0

Vous avez besoin d'actualiser une table dans currentViewController ou dans la précédente? –

+2

Je suggère d'utiliser le protocole protocol/delegate pour passer la nouvelle note à votre 'UITableViewController'. Voir ici: https://stackoverflow.com/questions/30618172/how-to-send-data-back-by-popviewcontrolleranimated-for-swift – toddg

+0

Il semble que vous ayez trop besoin de faire une requête http pour obtenir des données alors que vous pourriez simplement passer le un retour et l'ajouter à votre vue de table – toddg

Répondre

0

Comme mentionné dans les commentaires, effectuer un appel de service juste pour mettre à jour la tableview peut être une surcharge. Toutefois, si tel est le scénario d'affaires qui doit être mis en œuvre, vous pouvez faire la même chose dans

func viewWillAppear

dans le contrôleur de vue parent. Vous pouvez effectuer l'appel de service dans cette méthode et recharger la vue de table avec les données. Vous devez également vérifier la navigation globale de l'application car les appels de service dans la méthode viewWillAppear ne sont pas une bonne approche car ils sont appelés à chaque fois que la vue est affichée. Pour Ex: Si vous revenez d'une vue naviguée, la méthode est appelée.