ストーリーボードを使用してアプリを作成しました。すべてのビューはタブバーコントローラーによって管理されます。
したがって、起動時に(私は現在iPad UIでのみ作業しています)、これを実行します。
- (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のタブを有効または無効にできるようにしたい(たとえば、デフォルトで無効になっている2番目と3番目のタブにアクセスするには、最初のタブで項目を選択する必要があります)
私がはっきりしていないのは、タブを有効/無効にするためにタブにアクセスする方法です。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];
(それはちょっとうまくいくようですが、かなり粗雑なようです。)