0

J'ai créé une classe CustomTabBarController avec 5 boutons qui fonctionnent parfaitement.Comment puis-je accéder à un élément de la barre d'onglets en appuyant sur un bouton de la barre de navigation

Chaque bouton déclenche un contrôleur de vue individuel. Exemple: le bouton home déclenche le HomeViewController et le montre parfaitement à l'écran.

Dans le homeViewController, j'ai créé un élément de bouton de la barre droite avec le code suivant:

let homeButton = UIBarButtonItem(image: UIImage(named: "HomeButton"), style: .plain, target: self, action:#selector(homeViewController.goToHomeVC) 

self.navigationItem.rightBarButtonItem = homeButton 

    func goToHomeVC(sender: UIButton) { 
     // Go to home page (tab bar index 0) 
} 

Comment puis-je mettre en œuvre ma fonction tappedHome pour qu'il puisse accéder à l'élément de barre d'onglets (Accueil) il déclenche le homeViewController et le montre sur l'écran?

Répondre

0

Fondamentalement, Ce n'est pas réel UITabBarController, donc, Vous devez maintenir le push et pop manuellement.

Voici le code de push et pop qui vous aidera à vous déplacer entre vos cinq classes de contrôleur de vue.

func pushIfRequired(className:AnyClass) { 

    if (UIViewController.self != className) { 
     print("Your pushed class must be child of UIViewController") 
     return 
    } 
    let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    var isPopDone = false 
    let mainNavigation = UIApplication.shared.delegate?.window??.rootViewController as? UINavigationController 
    let viewControllers = mainNavigation!.viewControllers 
    for vc in viewControllers { 
     if (type(of: vc) == className) { 
      mainNavigation?.popToViewController(vc, animated: true) 
      isPopDone = true 
      break 
     } 
    } 
    if isPopDone == false{ 
     let instanceSignUp = storyboard.instantiateViewController(withIdentifier: NSStringFromClass(className)) // Identifier must be same name as class 
     mainNavigation?.pushViewController(instanceSignUp, animated: true) 
    } 
} 

Utilise

pushIfRequired(className: FirstTabVC.self) 
0

Si vous ne me dérange pas de vérifier le parent pour accéder à votre CustomTabBarController,

func navButtonPressedAction() { 
    guard let tabVC = self.parent?.parent as? UITabBarController else { return } 
    tabVC.selectedIndex = 2 //Index of the tab bar item here 
} 
+0

Lire la première ligne de la question avec soin .. –