l'application iOS avec vue à onglets de table, comment réinitialiser onglet Affichage de la table? Débutant.
-
27-10-2019 - |
Question
I ai une application à onglets avec 3 onglets
Le premier onglet est une vue de table Les deuxième et troisième onglets sont des vues en une seule page
Quand un utilisateur clique sur une cellule de table en vue d'une nouvelle vue est poussé sur un bouton de retour à la cellule du tableau.
Maintenant, supposons que cliquent sur l'onglet 2, puis de nouveau à l'onglet 1. La nouvelle vue qui a été poussé sur l'onglet 1 est encore visible. Ce que je voudrais est d'avoir la vue de la table « reset » quand ils naviguent loin avec un autre onglet afin que lors de leur retour, ils sont présentés en vue de la table au lieu de la nouvelle vue qui a été poussé sur.
La solution
Je suis d'accord avec un commentaire ElJay, mais pour répondre à la UITabBarControllerDelegate question de l'utilisation des
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
lorsqu'un nouvel onglet est sélectionné si le siège actuel est l'onglet 1 propriété selectedIndex de tabBarController
et si oui popToRootViewController:
Autres conseils
Comme les autres l'ont dit, ce qui est probablement pas une bonne expérience utilisateur. L'idée d'un contrôleur onglet est qu'il permet à l'utilisateur de commutateur librement entre les différentes parties de leur application et aller de retour à ce qu'ils faisaient avant.
Si vous êtes déterminé à le faire de cette façon, alors que votre vue racine du contrôleur de vue de la navigation contrôleur une sous-classe personnalisée, et le mettre en place en tant que délégué de la barre d'onglets contrôleur.
Dans votre contrôleur de vue personnalisée, mettre en œuvre la fonction shouldSelect (), comme suit:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool
{
if viewController == self.navigationController {
self.navigationController.popToRootViewController()
}
return true
}
Divulgation:. Je n'ai pas essayé de compiler le code ci-dessus, beaucoup moins tester