代码之家  ›  专栏  ›  技术社区  ›  MarkPowell

以编程方式弹出UIView失败

  •  0
  • MarkPowell  · 技术社区  · 15 年前

    从视图中以编程方式删除堆栈时遇到问题。我做的事情有点复杂,这肯定无助于解决问题。我想做的是:

    1. 用户位于选项卡视图控制器的一个选项卡中。
    2. 用户从包含URL的表中选择项。
    3. 将弹出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: 什么都不做。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Dougnukem    15 年前

    你应该打电话 UINavigationController popToViewController 方法。

    popToViewController:动画:

    弹出视图控制器,直到 指定的视图控制器位于 导航堆栈的顶部。

    • (NSArray*)popToViewController:(UIViewController) *)viewController动画:(BOOL)动画参数

    视图控制器

    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
    

    在显示其视图之前。

    返回值

    从中弹出的控制器

    有关导航 导航栏。