2017-05-25 1 views
0

J'utilise TableView sous la barre Tab Mon exigence est de faire défiler la vue tableau lorsque l'utilisateur appuyez deux fois sur le point de la barre d'onglet pour le contrôleur de vue sélectionnéeDétecter Double Tap sur UITabbarControler article pour faire défiler la table vue vers le haut

ceci est mon code

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool 
{ 

    if tabBarController.viewControllers!.index(of: viewController) == 0 { 
     if let navigationController = viewController as? UINavigationController{ 
      if let streamController = navigationController.viewControllers.last as? StreamViewController 
      { 
       streamController.tableViewStream.setContentOffset(CGPoint(x: 0, y: 0), animated: false) 

      } 
     } 
     return true 
    } 

} 

Mais cela provoque la défilement de la table lorsque l'utilisateur appuie sur un élément, ce qui me permet de conserver la position de défilement.

donc ce que je veux est

utilisateur 1.If défiler la table et aller sur un autre onglet et revenir par la position de défilement robinet doit rester simple même

utilisateur 2.Dans Appuyez deux fois tout moment élément onglet barre d'onglets de la liste doit être défiler vers le haut

Répondre

1

Dans votre code je voudrais ajouter vérifier si ce contrôleur de vue est déjà sélectionné

if tabBarController.viewControllers!.index(of: viewController) == 0 { 

    if self.selectedIndex != 0 { return true } 

    if let navigationController = viewController as? UINavigationController{ 
     if let streamController = navigationController.viewControllers.last as? StreamViewController 
     { 
      streamController.tableViewStream.setContentOffset(CGPoint(x: 0, y: 0), animated: false) 

     } 
    } 
    return true 
} 
+1

remercie ses résoudre le problème non exactement avec un double tap, mais si je tape sur l'élément de la barre d'onglets si je suis déjà sur 0 index –