Swift - 以模态方式打开Web视图链接

时间:2016-06-23 16:14:45

标签: ios xcode swift uiwebview

因此,我有一个显示页面的Web视图,并希望在包含Web视图的新视图控制器中打开任何链接(如twitter和Facebook do)。

我已经找到了如何获取点击链接的网址:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    let youClicked = request.URL!
    print(youClicked)
    return true
}

但是还没有设法弄清楚如何将这个值传递到另一个页面上的Web视图中,并将该视图控制器模态地呈现为一个popover。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

Apple Developer Documentation

查看 SFSafariViewController

为了实施解决方案,您必须导入 SafariServices ,之后......

  1. 声明Safari视图控制器

    让目的地:NSURL = NSURL(字符串:" http://desappstre.com")!

    让safari:SFSafariViewController = SFSafariViewController(URL:destination)

  2. 从当前视图控制器查询到步骤1中声明的safari视图控制器

    self.presentViewController(safari,animated:true,completion:nil)

  3. 如果您需要控制HTTP事件,可以使用目标视图控制器中的SFSafariViewControllerDelegate

答案 1 :(得分:2)

没有开箱即用的组件可以满足您的需求。相反,你必须创建自己的组件:

  1. 创建一个新的UIViewController并在其中放置一个WKWebView(可以通过Interface Builder或Code归档 - 我通常更喜欢Interface Builder)。此外,为WKWebView

  2. 创建一个插座(例如称为“webView”)
  3. 创建控制器 - 设置URL并显示它   // Create the controller let controller = storyboard.instantiateViewControllerWithIdentifier("MyCustomWebViewController")      //start loading the URL controller.webView.loadRequest(request) // present it presentViewController(viewController, animated: true, completion: nil)