2017-09-12 2 views
0

Ich habe eine Tabellenansicht mit integriertem Navigationscontroller. Ich habe eine UIBarButtonItem (hinzufügen) -Schaltfläche hinzugefügt. Wenn ich auf diese Schaltfläche klicke, öffnet sich eine neue Ansicht, in der der Benutzer die Daten eingibt und einreicht (was einen Web-Service-Anruf ausführt) und zur vorherigen Ansicht zurückkehrt. Diese Navigation geschieht, wie unten gezeigt,IOS swift UIBarButtonItem Aktion

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

Und in neue Ansicht ich folgende,

@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) 
    } 
} 

diese Weise wird ein Datensatz gespeichert wird und eine Ansicht wird vom Navigationscontroller Stapel geholt, sondern nur, was ich don In diesem Fall werden die Tabellenansichtsdaten in der übergeordneten Ansicht aktualisiert (wo ich möglicherweise einen neuen http-Serviceaufruf durchführen muss, um alle Datensätze zu lesen).

Ich hoffe, ich kann das Problem erklären? Jede Hilfe wird geschätzt.

+0

Sie müssen eine Tabelle in currentViewController oder in einem vorherigen aktualisieren? –

+2

Ich würde vorschlagen, Protokoll/Delegate-Muster zu verwenden, um die neue Notiz zurück zu Ihrem 'UITableViewController' zu übergeben. Siehe hier: https://stackoverflow.com/questions/30618172/how-to-send-data-back-by-popviewcontrolleranimated-for-swift – toddg

+0

Scheint wie Overkill, um eine HTTP-Anfrage zu machen, um Daten zu erhalten, wenn Sie die einfach übergeben könnten ein Datensatz zurück und fügen Sie es in Ihre Tabellenansicht – toddg

Antwort

0

Wie in den Kommentaren erwähnt, könnte es ein Overkill sein, einen Serviceanruf nur zur Aktualisierung der Tabellenansicht durchzuführen. Wenn dies jedoch das Geschäftsszenario ist die umgesetzt werden muss, können Sie das gleiche tun in

func viewWillAppear

in den übergeordneten View-Controller. Sie können den Serviceaufruf in dieser Methode durchführen und die Tabellensicht mit den Daten neu laden. Sie müssten auch die allgemeine Navigation der Anwendung überprüfen, da das Ausführen von Serviceaufrufen in der viewWillAppear-Methode kein guter Ansatz ist, da diese bei jeder Anzeige der Ansicht aufgerufen werden. Zum Beispiel: Wenn Sie von einer navigierten Ansicht zurückkommen, wird auch die Methode aufgerufen.

Verwandte Themen