iOS:编辑选项卡后导航到特定选项卡';位置

iOS:编辑选项卡后导航到特定选项卡';位置,ios,uitabbarcontroller,ibaction,Ios,Uitabbarcontroller,Ibaction,我有一个带有UITabBarController的应用程序,它包含6个选项卡。我还有一个iAction,其中包含以下代码 self.tabBarController.selectedIndex = 2; 导航到另一个选项卡(配置文件选项卡)。除非我转到More选项卡并更改选项卡的位置,否则它工作正常。然后,i操作不会将我发送到Profile选项卡,而是发送到第二个选项卡,可以是任何其他选项卡 如何使用myiAction导航到特定选项卡,而不是使用选项卡顺序?您需要维护选项卡控制器管理的视图控制

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

self.tabBarController.selectedIndex = 2;
导航到另一个选项卡(
配置文件选项卡
)。除非我转到
More
选项卡并更改选项卡的位置,否则它工作正常。然后,
i操作
不会将我发送到
Profile选项卡
,而是发送到第二个选项卡,可以是任何其他选项卡


如何使用my
iAction
导航到特定选项卡,而不是使用选项卡顺序?

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

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

现在,当您想要切换选项卡时,您不需要使用self.tabBarController.selectedIndex=2,您使用

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

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

UITabbarController选择了ViewController,在这种特殊情况下可以进行救援。如果我没有弄错的话,您将包含其他视图控制器的UINavigationController作为UITabbarController的子级。如果是这样,您可以将UITabbarController的selectedViewController属性指定给特定的UINavigationController,前提是您有IVAR或属性来引用这些UINavigationController。这样,您就不会绑定到任何选项卡索引

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