Iphone 在选项卡栏应用程序中交换视图直接调用视图控制器,而不是通过其索引

Iphone 在选项卡栏应用程序中交换视图直接调用视图控制器,而不是通过其索引,iphone,objective-c,Iphone,Objective C,我想在选项卡栏应用程序中交换视图,但我不能依赖视图控制器的索引来改变它们。因此,我无法使用以下代码: [self.tabBarController setSelectedIndex:4]; 我希望能够按名称调用特定的视图控制器。请问我怎么做 谢谢您可以使用以下代码选择特定类别的view controller: NSUInteger index = [self.tabBarController.viewControllers indexOfObjectPassingTest:^BOOL(

我想在选项卡栏应用程序中交换视图,但我不能依赖视图控制器的索引来改变它们。因此,我无法使用以下代码:

    [self.tabBarController setSelectedIndex:4];
我希望能够按名称调用特定的视图控制器。请问我怎么做


谢谢

您可以使用以下代码选择特定类别的view controller:

NSUInteger index = [self.tabBarController.viewControllers indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
                    return [obj isKindOfClass:[ClassOfViewControllerYouAreLookingFor class]];
            }];
if(index != NSNotFound) {
    [self.tabBarController setSelectedIndex:index];
}
或者,您可以使用以下代码简单地选择特定的ViewController实例:

NSUInteger index = [self.tabBarController.viewControllers indexOfObject:yourViewController];
if(index != NSNotFound) {
    [self.tabBarController setSelectedIndex:index];
 }

如果他们是同一个班级呢?你真的应该使用self.tabBarController.viewControllers[someIndex]