So implementieren Sie didSelectViewController

Ich möchte das Ereignis abfangen, wenn jemand zwischen Registerkarten wechselt. Ich habe die folgenden zwei Funktionen in meiner Appdelegate-Datei:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UITabBarController * uitbc = [storyboard instantiateViewControllerWithIdentifier:@"tabbarcontroller"];
    uitbc.delegate = self;
    [self.window addSubview:uitbc.view];

    return YES;
}


- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    NSLog(@"switching");
}

Aber dieNSLog(@"switching"); feuert nie. Der xcode gibt eine Warnung für die Zeile ausuitbc.delegate = self; "Übergabe von appdelegate const__strong an Parameter des inkompatiblen Typs id".

Was mache ich falsch? Ich folge nur der akzeptierten Antwort, die hier gefunden wurde, außer ich instanziiere mein Tabbarcontroller-Formular-Storyboard:

wie man das Ereignis erhält, das Vorsprungsmenü auf iphone schaltet

Aktualisieren Auf Skrams Vorschlag hin habe ich dies für mein Appdelegate geschrieben, aber das NSLOG (Switching) feuert immer noch nicht:

@interface johnAppDelegate : UIResponder <UITabBarControllerDelegate>

Ich habe auch mein didFinishLauchingWithOptions aktualisiert:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
tabBarController = self.window.rootViewController.tabBarController;
tabBarController.delegate = self;
[window addSubview:tabBarController.view];
}

Gut, dass nichts abstürzt. Ich habe auch nicht mehr die Warnung vor inkompatiblen Typen. DidSelectViewController wird jedoch nicht ausgelöst.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage