16

Ich möchte die Standardaktion deaktivieren, wenn ein Benutzer auf das Tabbar-Element klickt.Aktion deaktivieren - Benutzer tippt auf das Tabbar-Element, um zum Stammansicht-Controller zu wechseln

Zum Beispiel habe ich eine Registerkarte mit Tab1, Tab2 und Tab3. In Tab1 kann der Benutzer von Ansicht1 zu Ansicht3 (Ansicht1> Ansicht2> Ansicht3) navigieren. Wenn sich Benutzer in View3 befindet und er Tab1 antippt, führt die Anwendung den Benutzer zu View1 (dem Stammansicht-Controller). Ich möchte diese Funktionalität deaktivieren. Ich möchte nicht, dass Tab1 auf alle View-Controller klopft. Wie kann ich das machen?

Edit:

Dieses Verhalten ist ein wenig seltsam, aber eine praktische Abkürzung bei tiefer Hierarchie!

Sie können folgende UITabBarControllerDelegate Methoden implementieren diese systemweite Verknüpfung zu deaktivieren:

#pragma mark - 
#pragma mark UITabBarControllerDelegate 

- (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc { 
    UIViewController *tbSelectedController = tbc.selectedViewController; 

    if ([tbSelectedController isEqual:vc]) { 
     return NO; 
    } 

    return YES; 
} 

Antwort

19

, wenn Sie die UITabBarController Delegierten sehen es eine Methode ist:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

Wenn Sie dies in Ihrer Klasse implementieren Sie können überprüfen, ob der UIViewController bereits angezeigt wird, und dann NEIN zurücksenden, wodurch dies verhindert wird.

hatte ich das gleiche Problem mit einem ABPeoplePicker Objekt in einem UITabBarController eingebettet, dass die Lasche, die zeigen, wurde ein zweites Mal ‚Kontakte‘ drücken bereits angezeigt würde die ABPeoplePicker Steuerung machen die ‚Gruppen‘

+0

Arbeitete! Vielen Dank. – Mustafa

Verwandte Themen