2010-12-12 4 views
1

I UITabBarControllerDelegate Veranstaltung umgesetzt:Wie kann ich kündigen in didSelectViewController Falle UITabBarControllerDelegate Protokoll einen View-Controller öffnen

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{ 
    if (viewController == [tabBarController.viewControllers objectAtIndex:0]) { 
     //HERE:check some condition and cancel opening the viewController if needed 
    } 
} 

In obigen Funktion, nachdem eine Bedingung überprüft, würde Ich mag App etwas, was sonst noch (dh eine weitere Öffnung View-Controller), anstatt den rechten View-Controller zu öffnen, der auf dem Tab-Bar-Element ausgewählt wurde. Das Verhalten des Ereignisses:

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

stimmt nicht mit meiner Nachfrage überein.

+0

Wie kann sumoutSelectViewController nicht Ihren Anforderungen entsprechen? Überprüfen Sie einfach auf Ihren Zustand. Wenn es übereinstimmt, machen Sie den Teil "etwas anderes" und geben Sie NO zurück, andernfalls geben Sie einfach YES in dieser Methode zurück. – mrueg

+0

Ich möchte den Lichteffekt auf Balkenelement haben und eine andere Ansicht öffnen, wenn der Benutzer es berührt. Wenn Sie den sentSelectViewController verwenden und NO zurückgeben, hat dies keine Auswirkungen auf dieses Element. –

Antwort

1

Wenn die Rückkehr von NO von shouldSelectViewController einen Übergang auf eine andere Registerkarte nicht abbricht, haben Sie Ihren Delegaten oder etwas anderes falsch verdrahtet. Überprüfen Sie, ob die Funktion während der Ausführung tatsächlich erreicht wird.

Testen Sie in shouldSelectViewController, NO zurückgeben und präsentieren Sie Ihre anderen View-Controller ist die richtige Möglichkeit, andere Ansichten auf einer Registerkarte Auswahl zu präsentieren.

Verwandte Themen