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.