查看控制器A B C D. A - > B - > C-> d popViewController只能形成D到C popViewTopController只能形成D到A; 如果我有10个视图控制器,我可以按任何方式弹出任意视图吗?
谢谢大家。 popViewController会弹出一个新的视图控制器吗?
答案 0 :(得分:3)
选项1:按班级选择
要告诉navigationController
弹出特定课程,您可以执行以下操作:
NSArray *allViewControllers = [self.navigationController viewControllers];
for (UIViewController *aViewController in allViewControllers)
{
if ([aViewController isKindOfClass:[B class]])
{
[self.navigationController popToViewController:aViewController animated:YES];
}
}
考虑到你应该只使用它,如果你没有多次推动同一个类的实例。
选项2:按级别选择
如果要弹出到特定级别,只需按self.navigationController.viewControllers
处的索引选择它,因为它对应于级别。第一个推送的UIViewController将在索引0处,第二个在索引1处,依此类推:
NSArray *allViewControllers = [self.navigationController viewControllers];
UIViewController *aViewController = [allViewControllers objectAtIndex:level];
[self.navigationController popToViewController:aViewController animated:YES];
答案 1 :(得分:0)
这是您要查找的方法(reference)
在Obj-c
- (NSArray *)popToViewController:(UIViewController *)viewController
animated:(BOOL)animated
您应该传入要弹出的视图控制器
答案 2 :(得分:0)
使用以下UINavigationController方法转到当前堆栈上的任何视图控制器。
- (NSArray *)popToViewController:(UIViewController *)viewController
animated:(BOOL)animated
例如,如果您在UIViewController中并且想要回弹到堆栈中的第三个:
UINavigationController * nc = self.navigationController;
UIViewController * popToVC = [nc.viewControllers objectAtIndex:2];
[nc popToViewController:popToVC animated:YES];
答案 3 :(得分:0)
如果要弹出任何想要更改的视图fragment
:1,2,3..etc
它将从任何视图弹出到第一个,第二个等。
objectAtIndex
答案 4 :(得分:-1)
SecondViewController *sec = [SecondViewController alloc] init];
[self.navigationController popViewController:Sec animated:YES];