[英]poptorootviewcontroller when clicking a button
我现在解释清楚,
我在viewcontroller中有一个tabbarcontoller,它是单视图应用程序项目的主视图控制器。
我将tabbarcontroller添加到viewcontroller作为子视图。 在tabbarcontroller中,我添加了两个导航控制器,如下图所示,
我添加了三个(名为First,Second,Third)的viewcontrollers作为新文件。
如果我使用下面的代码在第一个选项卡中从一个viewcontroller导航到另一个viewcontroller,
third = [[Third alloc] initWithNibName:@"Third" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:third animated:YES];
然后我通过单击tabbarcontroller下面的选项卡切换到第二个选项卡。
接着
如果我通过单击第三个视图控制器中的按钮切换到下一个选项卡(第一个选项卡),
-(IBAction)switchtab
{
vc.tabctrl.selectedIndex=0;
//vc is the main viewcontroller to which the tabbarcontoller(tabctrl) added as subview
}
切换到下一个选项卡后,我应该poptorootviewcontroller,我尝试下面的代码
-(IBAction)switchtab
{
vc.tabctrl.selectedIndex=0;
[vc.tabctrl.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
}
但它跳转到下一个选项卡,但popToViewController不工作,任何建议?
如果您的viewcontroller是导航控制器,那么当您切换选项卡时,以下代码将更改为根视图
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if ([self.tabBarController.selectedViewController isKindOfClass:[UINavigationController class]])
{
[(UINavigationController*)self.tabBarController.selectedViewController popToRootViewControllerAnimated:YES];
}
}
我不明白这里的整个结构,但我已经意识到你正在使用不同的控制器来推动vc“第三”并弹出到root。 你能试一下吗:
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
在同一个班级你用来推“第三”?
编辑:另一种选择,你可以试试这个:
-(IBAction)switchtab
{
vc.tabctrl.selectedIndex=0;
[(UINavigationController*)vc.tabctrl.selectedViewController popToRootViewControllerAnimated:YES];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.