Я создал свое приложение с помощью раскадровки и все представления управляются tabbarcontroller.
Итак, при запуске (В настоящее время я работаю только над пользовательским интерфейсом iPad )он делает это:
- (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;
}
}
Я хочу иметь возможность включать или отключать вкладки в tabBarController на основе пользовательского ввода (, поэтому, например, элемент необходимо выбрать на первой вкладке, чтобы получить доступ ко второй и третьей вкладкам, которые по умолчанию отключены)
Что мне не ясно, так это как получить доступ к вкладкам, чтобы включить/ отключить их. Буду ли я создавать экземпляр appdelegate, а затем делать что-то вроде
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];
(Кажется, что это должно работать, но это также кажется довольно грубым.)