J'ai dû mettre en œuvre quelque chose de semblable dans une application que je suis en train de construire, il est relativement simple à faire, vous devez implémenter une méthode de délégué de UITabBarController
afin d'y parvenir.
La méthode déléguée vous devez mettre en œuvre est: tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool
De retour faux de cette méthode arrête le contrôleur de l'onglet de sélectionner l'onglet, vous suffit alors de mettre en œuvre votre propre logique pour présenter le UIViewController
programatically.
Voici un exemple:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
// If your view controller is emedded in a UINavigationController you will need to check if it's a UINavigationController and check that the root view controller is your desired controller (or subclass the navigation controller)
if viewController is YourViewControllerClass {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let controller = storyboard.instantiateViewController(withIdentifier: "storyboardID") as? YourViewControllerClass {
controller.modalPresentationStyle = .fullScreen
self.present(controller, animated: true, completion: nil)
}
return false
}
// Tells the tab bar to select other view controller as normal
return true
}
Je n'ai pas testé le code ci-dessus comme ma mise en œuvre est légèrement différent et a plusieurs variables. Le principe général est le même. Faites-moi savoir comment vous allez et je mettrai à jour la réponse si nécessaire.
J'ai utilisé votre code et il ne fonctionne toujours pas comment il aimerait que cela fonctionne. Donc créé une nouvelle classe pour mon TabBarController et collé votre code là-bas. Est-ce que c'est ce que tu voulais dire? Et quelle classe devrais-je écrire au lieu de YourViewControllerClass? Peut-être que vous pouvez jeter un oeil à ma photo, que j'ai liée dans mon message original. –
Hey, vous devrez sous-classer votre 'UITabBarController' et implémenter le' UITabBarDelegate' sur cette classe. Dans 'viewDidLoad', vous devrez faire' self.delegate = self', la méthode ci-dessus sera lancée lorsque vous essaierez de sélectionner un onglet en bas. 'YourViewControllerClass' est la classe associée au contrôleur de vue de votre storyboard (celui de gauche). Vous devrez sous-classer 'UIViewController' et appliquer cette classe à ce contrôleur de vue. – WsCandy
Yeey! Ça marche. Merci beaucoup pour votre aide. J'ai oublié le self.delegate = self.Maintenant, si je veux le fermer avec un bouton, comment puis-je revenir à ViewController était juste avant? –