我正在尝试从一个在UIWindow中的UIViewController中访问我的UiTabBarController,
由于它不是UITabBarController的一部分-使用 self.tabBarController..
不起作用,因为它将为nil。
所以我尝试了这段代码:
BBAppDelegate *appDelegate = (BBAppDelegate *)[[UIApplication sharedApplication] delegate];
UITabBarController *tabBarController = appDelegate.window.rootViewController.tabBarController;
当使用调试器逐步执行代码时,我可以看到appDelegate
确实有一个tabBarController且不为null。然而,在下一行...
UITabBarController *tabBarController = appDelegate.window.rootViewController.tabBarController;
这会导致
tabBarController
实例为空,而appDelegate
中的tabBarController
仍具有分配的内存地址,且不为空。
我做错了什么?
编辑
这是我的调试器外观:
谢谢!
编辑2
这是我设置侧边栏菜单的方式,它被添加到了rootViewController中。
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone"
bundle: nil];
BBFilterViewController *loginController=[[UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"FilterViewController"]; UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:loginController];
self.tabBarController = [mainStoryboard instantiateViewControllerWithIdentifier: @"HomeScreen"];
MVYSideMenuOptions *options = [[MVYSideMenuOptions alloc] init];
options.contentViewScale = 1.0;
options.contentViewOpacity = 0.5;
options.shadowOpacity = 0.0;
MVYSideMenuController *sideBarController = [[MVYSideMenuController alloc]initWithMenuViewController:navController contentViewController:self.tabBarController options:options];
self.window.rootViewController = sideBarController;
[self.window.rootViewController addChildViewController:self.tabBarController];
[self.window makeKeyAndVisible];