【问题标题】:Opening a new UIViewController when a link on a UIWebView is clicked单击 UIWebView 上的链接时打开新的 UIViewController
【发布时间】:2012-06-13 03:20:33
【问题描述】:

我找到了符合我的问题的帖子:Clicking a link in UIWebView pushes onto the NavigationView stack

但是,以下情况有所不同: 我没有使用导航控制器,而是使用基于视图的应用程序在按下相应按钮时手动切换到不同的视图控制器。 我没有使用链接,而是使用 onClick 方法来检测用户何时单击 UIWebView 上的某些内容并尝试使用新的 UIWebView 打开新的 ViewController。

相同的代码是否可以工作,还是我必须进行一些更改?

【问题讨论】:

    标签: objective-c ios xcode uiviewcontroller uiwebview


    【解决方案1】:

    你必须做一些修改

    第一个: 当onClick 时,您必须将当前页面重定向到新位置 例如,此位置将是 MYLocation://GoThere

    第二: 更新shouldStartLoadWithRequest

    -(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    
    NSURL *url = request.URL;
    NSString *urlString = url.absoluteString;
    
    //Check if special link
    if ( [ urlString isEqualToString: @"MYLocation://GoThere" ] ) {
        //Here present the new view controller
        MyViewController *controller = [[MyViewController alloc] init];
        [self presentViewController:controller animated:YES];
    
        return NO;
    }
    
        return YES;
    
    }
    

    【讨论】:

    • 是的。这是执行此操作的标准方法。 +1。
    • 好的..这行得通。但是我已经在 webView 委托中实现了这个方法。我不能使用 self 所以我正在调用主 ViewController 来代替 self。这导致应用程序崩溃。你能帮帮我吗?
    • 然后将代理中的一些日期传递给您正在使用的主视图控制器,并将此代码复制到它 MyViewController *controller = [[MyViewController alloc] init]; [自我presentViewController:控制器动画:YES];让 mainviewcontroller 处理初始化并将数据传递给它将呈现的视图
    • 抱歉 Omar 再次打扰您。这就是我所做的:我从委托中调用了一个函数来将控制权传递给主视图控制器。在那里我尝试使用 presentModalViewController 更改视图控制器。当那不起作用时,我尝试使用 insertSubview。然而,他们都没有工作。似乎每次我尝试添加新的视图控制器时都会调用 viewDidLoad。当我试图从那里切换视图时也不起作用你知道发生了什么吗?
    • 嗨,我面临着完全相同的问题。我已经花了 2 天时间寻找解决方案,但情况仍然相同。请帮帮我....
    【解决方案2】:

    我认为您可以使用 Omar 发布的 shouldStartLoadWithRequest。 如果新的 viewcontroller 有 webviewcontroller,那么你应该将 url(甚至请求)传递给新的 viewcontroller 以显示点击的 URL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多