iOS -Registerkartenanwendung mit Tabellenansicht, Wie reset die Tabellenansicht auf Registerkarte? Anfänger.
-
27-10-2019 - |
Frage
Ich habe eine Registerkartenanwendung mit 3 Registerkarten
Die erste Registerkarte ist eine Tabellenansicht. Die Registerkarten der zweiten und dritten sind einzelne Seitenansichten
Wenn ein Benutzer auf eine Tabellenzelle in Ansicht klickt, wird eine neue Ansicht mit einer Rückschaltfläche zur Tabellenzelle eingeschaltet.
Nehmen wir nun an, sie klicken auf Tab 2, dann zurück zu Registerkarte 1. Die neue Ansicht, die auf der Registerkarte 1 gedrückt wurde, ist noch sichtbar. Ich möchte die Tabellenansicht "zurücksetzen", wenn sie mit einer anderen Registerkarte von ihr weg navigieren, damit sie bei der Rückkehr mit der Tabellenansicht anstelle der neuen Ansicht präsentiert werden, die angezogen wurde.
Lösung
Ich stimme Eljay Kommentar zu, um die Frage zu beantworten, verwenden Sie UitabbarcontrollerDelegate
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
Wenn eine neue Registerkarte ausgewählt ist tabBarController
und wenn popToRootViewController:
Andere Tipps
Wie die anderen gesagt haben, ist dies wahrscheinlich keine gute Benutzererfahrung. Die Idee eines Registerkarte -Controllers ist, dass der Benutzer frei zwischen den verschiedenen Teilen ihrer App wechseln und direkt zu dem zurückkehren kann, was sie zuvor getan haben.
Wenn Sie entschlossen sind, dies auf diese Weise zu tun, machen Sie den Root View Controller Ihres Navigationsansichtscontrollers zu einer benutzerdefinierten Unterklasse und richten Sie sie als Delegierungen des Registerkarte Controllers ein.
Implementieren Sie in Ihrem benutzerdefinierten Ansichtscontroller die Funktion (), wie unten:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool
{
if viewController == self.navigationController {
self.navigationController.popToRootViewController()
}
return true
}
Offenlegung: Ich habe nicht versucht, den obigen Code zu kompilieren, geschweige denn zu testen.