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

Swift - Opening web view links modally

所以我有一个显示页面的网络视图,我想在一个包含网络视图的新视图控制器中以模态方式打开任何 links(就像 twitter 和 Facebook 那样)。

我已经弄清楚如何让 link 的 url 被点击:

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

但我还没有弄清楚如何将这个值传递到另一个页面上的 Web 视图中,并将该视图控制器以弹出窗口的形式呈现。

有什么想法吗?

看看 SFSafariViewController Apple Developer Documentation

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

  1. 声明一个 Safari 视图控制器

    let destination: NSURL = NSURL(string: "http://desappstre.com")!

    让 safari 浏览器:SFSafariViewController = SFSafariViewController(URL:目的地)

  2. 从您当前的视图控制器转到在步骤 1 中声明的 Safari 视图控制器

    self.presentViewController(野生动物园,动画:真,完成:无)

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

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

  1. 创建一个新的 UIViewController 并在其中放置一个 WKWebView(可以通过 Interface Builder 或代码存档 - 我通常更喜欢 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)