UITabBarController.selectedIndex返回错误的值

时间:2013-04-06 09:03:57

标签: ios uiviewcontroller uitabbarcontroller uisplitviewcontroller

我有UITabBarController个标签。每个标签本身都有相同的UISplitViewController。我想查看tabbarcontroller的选定索引的值,以查看MasterViewController方法中UITableViewDelegate内部正在打开哪个splitview,但它返回了错误的值。即使选择了索引1,它也总是返回0。

在appdelegate中,我用循环中的相同代码用这种方式初始化了它们:

             MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPad" bundle:nil];

             UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

             detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];                 
             UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

             masterViewController.detailViewController = detailViewController;

             self.splitViewController = [[UISplitViewController alloc] init];
             splitViewController.tabBarItem = controller.tabBarItem;
             self.splitViewController.delegate = detailViewController;
             self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];
             [controllers replaceObjectAtIndex:index withObject:splitViewController];

}

任何帮助都将在很大程度上受到赞赏!我认为这可能是splitViewController的一些问题,因为它在iPhone上运行良好。

1 个答案:

答案 0 :(得分:1)

我的猜测是,这是因为您的ViewController期望TabBarController成为parentViewController。您可以尝试检查self.splitViewController.tabBarController.selectedIndex

但是,我建议您使用SplitViewController作为应用程序的根目录,并将TabBarController放入主服务器中。你可以用这种方式达到同样的效果,这样会更正确。希望这有帮助!

修改

根据View Controller Catalog“拆分视图控制器必须始终是您创建的任何接口的根。换句话说,您必须始终从UISplitViewController对象安装视图作为应用程序窗口的根视图。然后,拆分视图界面的窗格可能包含导航控制器,标签栏控制器或实现界面所需的任何其他类型的视图控制器。拆分视图控制器无法以模态方式显示。“

所以不要把它放在标签栏控制器中。