Verhindert, dass die Registerkarte an einem bestimmten Index - IOS - geändert wird
Vielen Dank für das Lesen meiner Frage.
Ich versuche, ein Popup-Menü zu implementieren, wenn ein Benutzer auf den Tab mit dem Index 4 klickt. Daher versuche ich zu verhindern, dass die Tab-Leiste den Viewcontroller wechselt, wenn der Index 4 gedrückt wird.
Hier ist mein Code:
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
NSLog(@"NO");
return NO;
}else{
NSLog(@"YES");
return YES;
}
}
Ich habe das implementiertUITabBarControllerDelegate
undself.delegate = self;
in demviewDidLoad
und es funktioniert doch nur einmal.
Wenn ich auf die Registerkarte "Index 4" klicke, wird das Menü angezeigt und die Registerkarte wechselt nicht die Ansicht (GROSSARTIG), aber wenn ich erneut klicke, ändert sich die Ansicht, auch wenn ich das Protokoll "NEIN" erhalte. Woran könnte das liegen?
Vielen Dank für alle Vorschläge!
Gelöst
Dank der Antwort von Kasaname löste ich das Problem, indem ich selectedindex hinzufügte und es auf einen Flag-Index (prevtab) setzte. Ich ändere die Registerkarte prevtab in den Index der zuletzt ausgewählten Registerkarte, außer wenn der Benutzer den Index 4 auswählt. Mein endgültiger Code:
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
self.selectedIndex = prevTab; //only change in this method
return NO;
}else{
return YES;
}
}