繁体   English   中英

以编程方式弹出UIView失败

[英]Popping UIView programmatically failing

我无法以编程方式从视图中删除堆栈。 我做的事情有些令人费解,这当然无济于事。 这是我想做的:

  1. 用户位于选项卡视图控制器的一个选项卡中。
  2. 用户从包含URL的表中选择项目。
  3. 应用程序切换到另一个选项卡视图,并将现有的UIWebView设置为选定的URL。
  4. 弹出UIWebView堆栈上的所有视图,显示UIWebView。

我的第三步工作正常。 但是,似乎无法从堆栈中弹出任何视图。 这是我的尝试:

- (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:不会执行任何操作。

任何帮助,将不胜感激。

您应该调用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 

在显示其视图之前设置导航控制器。

返回值

一个数组,其中包含从堆栈中弹出的视图控制器。 讨论区

有关如何更新导航栏的信息,请参阅“更新导航栏”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM