Iphone 选择tabview-IOS时获取UIViewController的正确实例

Iphone 选择tabview-IOS时获取UIViewController的正确实例,iphone,ios,uiviewcontroller,uitabbarcontroller,Iphone,Ios,Uiviewcontroller,Uitabbarcontroller,在我的应用程序中,我的tabview有一个相当大的问题。我的问题是,在Tabar的中间使用自定义UBITCON,然后在更改索引时手动调用 DestStultVIEW控制器委托代码>代码> UITABBAKECORDER委托/。p> 问题是,当我想检查已选择的viewController时,我没有得到viewController的正确实例 代码: 我在这里调用这个方法: -(void) notifmethod{ UIViewController *cameraViewController

在我的应用程序中,我的tabview有一个相当大的问题。我的问题是,在Tabar的中间使用自定义UBITCON,然后在更改索引时手动调用<代码> DestStultVIEW控制器委托代码>代码> UITABBAKECORDER委托/<代码>。p> 问题是,当我想检查已选择的viewController时,我没有得到viewController的正确实例

代码:

我在这里调用这个方法:

-(void) notifmethod{

    UIViewController *cameraViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"cameraNavViewController"]; //Tried this
    //CameraNavController *viewController = [[CameraNavController alloc] init];/And this
    [self tabBarController:self didSelectViewController:cameraViewController]; //The call
    NSLog(@"This called");
}

这样做的主要原因是,如果选择了某个viewcontroller,我想
poptrootviewcontrolleranimated:NO
。谢谢你的帮助

我认为您的问题在于,您正在notifmethod中创建cameraViewController的新实例,而不是获取已经与选项卡栏控制器关联的实例。此外,无需调用委托方法,只需执行以下操作:

-(void) notifmethod{

    UINavigationController *nav = self.tabBarController.viewControllers[2];
    [nav popToRootViewControllerAnimated:NO];
}
我假设您是从选项卡栏控制器的视图控制器之一调用它,所以我使用self.tabBarController。如果这不是真的,那么您必须更改该引用

-(void) notifmethod{

    UINavigationController *nav = self.tabBarController.viewControllers[2];
    [nav popToRootViewControllerAnimated:NO];
}