我无法以编程方式从视图中删除堆栈。我做的事情有点费解,这当然没有帮助。这就是我想要做的事情:
我已经完成了第三步工作。但是,似乎无法从堆栈中弹出任何视图。这是我的尝试:
- (void)openAndDisplayURL:(NSString*)URL {
tabBarController.selectedIndex = 0;
UIViewController *selectedController = tabBarController.selectedViewController;
if ([selectedController isKindOfClass:[UINavigationController class]]) {
UINavigationController *controller = (UINavigationController*)selectedController;
NSArray *views = controller.viewControllers;
for (id view in views) {
if([view respondsToSelector:@selector(openURLWithString:)]) {
NSString *completeURL = [NSString stringWithFormat:@"http://%@",URL];
[view openURLWithString:completeURL];
} else if ([selectedController isKindOfClass:[UINavigationController class]]) {
UINavigationController *subcontroller = (UINavigationController*)selectedController;
[subcontroller.navigationController popViewControllerAnimated:NO];
}
}
}
}
调试显示预期类型的预期视图数。当它是需要删除的视图时,它会正确进入else
块,但调用popViewControllerAnimated:
不会执行任何操作。
任何帮助将不胜感激。
答案 0 :(得分:3)
您应该调用UINavigationController popToViewController方法。
popToViewController:动画:
弹出视图控制器,直到 指定的视图控制器在 导航堆栈的顶部。
- (NSArray *)popToViewController :( UIViewController *)viewController动画:(BOOL)动画参数
的viewController
The view controller that you want to be at the top of the stack.
动画
Set this value to YES to animate the transition. Pass NO if you are
设置导航控制器 在显示其视图之前。
返回值
包含视图的数组 从中弹出的控制器 堆。讨论
有关如何导航的信息 栏已更新,请参阅“更新 导航栏。“