Ich habe meine App mit Storyboards erstellt und alle Ansichten werden von einem Tab-Controller verwaltet.Disable/Enable Tabs in UITabBarController in Storyboard-basierte App
So beim Start (ich bin nur auf dem iPad UI arbeitet derzeit) es tut dies:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UISplitViewController *splitViewController = [tabBarController.viewControllers objectAtIndex:0];
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
UINavigationController *masterNavigationController = [splitViewController.viewControllers objectAtIndex:0];
ProductionMasterViewController *controller = (ProductionMasterViewController *)masterNavigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
}
}
Ich möchte die Reiter in der TabBarController in der Lage sein zu aktivieren oder deaktivieren, basierend auf Benutzereingaben (so Zum Beispiel muss ein Element auf der ersten Registerkarte ausgewählt werden, um auf die zweite und dritte Registerkarte zuzugreifen, die standardmäßig deaktiviert sind.)
Ich weiß nicht, wie ich auf die Registerkarten zugreifen soll aktivieren/deaktivieren Sie sie. Würde ich eine Instanz der AppDelegate erstellen und dann etwas tun, wie
AppDelegate *d = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UITabBarController *tabs = (UITabBarController *)[d.window rootViewController];
[[[[tabs tabBar] items] objectAtIndex:2] setEnabled:YES];
[[[[tabs tabBar] items] objectAtIndex:3] setEnabled:YES];
[[[[tabs tabBar] items] objectAtIndex:4] setEnabled:YES];
(Das irgendwie scheint, wie es funktionieren sollte, aber es scheint auch ziemlich gross.)