I mis en œuvre l'événement UITabBarControllerDelegate:Comment puis-je annuler ouvrir un contrôleur de vue en cas didSelectViewController du protocole UITabBarControllerDelegate
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
if (viewController == [tabBarController.viewControllers objectAtIndex:0]) {
//HERE:check some condition and cancel opening the viewController if needed
}
}
En fonction ci-dessus, après avoir vérifié une certaine condition, je voudrais app faire quelque chose d'autre (ouverture d'un autre contrôleur de vue) au lieu d'ouvrir le contrôleur de vue de droite que l'utilisateur a sélectionné sur l'élément de la barre d'onglets. Le comportement de l'événement:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
ne correspond pas à ma demande.
Comment shouldSelectViewController ne correspond pas à votre demande? Vérifiez simplement votre condition. Si cela correspond à la partie 'autre chose' et renvoyez NO, sinon retournez simplement YES dans cette méthode. – mrueg
Je voudrais avoir l'effet de lumière sur l'élément de la barre et ouvrir une autre vue lorsque l'utilisateur a touché dessus. Si vous utilisez le shouldSelectViewController et renvoyez NO, il n'y a aucun effet sur ces éléments. –