iOS:在编辑标签位置后导航到特定选项卡

时间:2014-03-29 12:10:19

标签: ios uitabbarcontroller ibaction

我有一个UITabBarController的应用程序,其中包含6个选项卡。我还有IBAction,其中包含以下代码

self.tabBarController.selectedIndex = 2;

导航到另一个标签(Profile Tab)。除非我转到More标签并更改标签的位置,否则它会完美地完成。然后,IBAction不会将我发送到Profile Tab,而是发送到第二个标签,该标签可以是任何其他标签。

如何使用我的IBAction导航到特定标签,而不是使用标签顺序?

2 个答案:

答案 0 :(得分:1)

您需要维护由选项卡控制器管理的视图控制器的用途的映射以及它们的用途。如果每个选项卡都有一个不同类的视图控制器,那么你可以使用它并搜索它(但这并不理想......)。

更好的选择是维护一个字典,其中键是制表符/视图标识符(应该定义为常量),值是与这些标识符关联的视图控制器(并由制表符控制器管理)。

现在,当你想切换标签时,你不能使用self.tabBarController.selectedIndex = 2;,你可以使用

UIViewController *controller = self.config[XXXX];
self.tabBarController.selectedViewController = controller;

(其中XXXX是常量标识符,config是映射字典)

答案 1 :(得分:0)

UITabbarController已经选择了ViewController,可以在这种特殊情况下进行救援。如果我没有弄错的话,你有UINavigationController,它包含其他视图控制器,作为UITabbarController的子项。如果是这样,您可以将UITabbarController的selectedViewController属性分配给特定的UINavigationController,前提是您有ivars或属性来引用这些UINavigationControllers。通过这样做,您不受任何标签索引的约束。

UINavigationController *moreNavigationController = [UINavigationController alloc] …];
self.tabBarController.selectedViewController = moreNavigationController;