Dies ist ein Problem, für das ich scheinbar keine Lösung für Online finden kann.Nach Verwendung von "disneyViewController" in einer modalen Ansicht wird die beabsichtigte Ansicht mehrmals verschoben.
Ich habe folgendes Drehbuch:
Die Zeilen in der ersten Tabellenansicht haben einen Push segue zu der Ansicht, die Sie über den anderen Ansichten zu sehen.
Jetzt, wenn ich die bar-Taste in der anfänglichen Tabellenansicht drücke, führt es einen modalen Übergang zu einem neuen Navigationscontroller (der in der Mitte), wo Sie ein Objekt erstellen können.
in den selectFriends sehen auf der rechten Seite, wenn Sie auf drücken getan, um es diesen Code ausgeführt wird:
self.dismissViewController(true, completion: nil)
dann bringt es mich auf die anfängliche Tabellenansicht zurück, das ist das, was ich will.
Hier ist, wo es komisch wird
, wenn ich in die modalen Navigationssteuerung von der ersten Ansicht entlassen, es funktioniert gut
jedoch, wenn ich die modal Navigationssteuerung entlassen aus der selectFriends ansehen zurück zur ursprünglichen Tabellenansicht,
Anschließend wird der goToChat-Übergang so oft ausgeführt, wie er vor dem Anzeigen der modalen Ansicht ausgeführt wurde.
Es führt nicht einmal den didSelectRowAtIndexPath-Code aus.
Meine Vermutung ist, dass es etwas mit dem Mapping oder dem Speichern von Ansichten und Segmenten in der anfänglichen Navigationssteuerung zu tun hat.
Die erste Tabellenansicht hat dies für DidSelectRowAtIndexPath:
// finds user item to pass to UserProfileView
print("row selected")
if self.resultSearchController.active {
self.selectedItem = self.filteredItemsList[indexPath.row]
} else {
self.selectedItem = self.itemsList[indexPath.row]
}
self.ref.child("users/\(self.currentUser!.uid)").observeEventType(.Value, withBlock: { (snapshot) -> Void in
self.currentUserItem = UserItem(snapshot: snapshot)
self.performSegueWithIdentifier("goToChat", sender: nil)
})
}
Bitte lassen Sie mich wissen, wenn Sie eine Lösung.
Best wishes, Khaled
Es sieht aus wie das Problem ist Ihre 'observeEventType' Methode. Was ist das? So etwas habe ich noch nie gesehen. – matt
Es handelt sich um einen Firebase-Datenabruf, der jedes Mal ausgelöst wird, wenn die Datenbank geändert wird ... Wenn das Objekt erstellt wird, wird es also unabhängig von der Auswahl ausgeführt. DU SIND ABSOLUT RICHTIG! Danke, dass Sie mich darauf aufmerksam gemacht haben. – Aylii
Richtig, so meine Vermutung ist, dass Sie den Beobachter durch den Aufruf "observeEventType" "registriert" haben, und so feuert er jetzt wieder, weil er immer noch beobachtet ... Deshalb muss der Code nicht erneut ausgeführt werden; der "Block" wurde beibehalten, er läuft jetzt von selbst. – matt