如何在选择UITableViewCell后显示UIWebView?

时间:2017-07-13 20:41:42

标签: ios swift uitableview uiwebview

我目前将我的根视图控制器作为带有NavigationController的TableViewController。

window?.rootViewController = UINavigationController(rootViewController: FeedTableViewController(style: .grouped))

当选择一个单元格时,在我的TableViewController中,我想用一串HTML加载一个WebView。

我的代码目前是:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        guard let layout = TableViewLayout(indexPath: indexPath) else { fatalError() }
        switch layout {
        case .items:
            // load web view with html from a string
        default:
            break
        }
    }

我已经看到如何将一串HTML加载到WebView中,但我不知道如何使WebView成为选择单元格时显示的视图。我还需要这个,如果可能的话,不要破坏NavigationController。

1 个答案:

答案 0 :(得分:1)

你的评论很难知道“如果保留了NavigationController”。

但我认为它至少可以给你一个线索:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        guard let layout = TableViewLayout(indexPath: indexPath) else { fatalError() }
        switch layout {
        case .items:
             let webView = UIWebView(frame: CGRect(x: tableView.frame.origin.x, y: tableView.frame.origin.y, width: tableView.frame.size.width, height: tableView.frame.size.height)
             let testHTML = Bundle.main.path(forResource: "privacy", ofType: "html")
             do {
                 let contents = try NSString(contentsOfFile: testHTML!, encoding: String.Encoding.utf8.rawValue)
                 let baseUrl = NSURL(fileURLWithPath: testHTML!) //for load css file
                 webView.loadHTMLString(contents as String, baseURL: baseUrl as URL)
             } catch {
                print("error")
             }
             self.view.addSubview(webView)
        default:
            break
        }
}

它将在与表视图相同的框架中添加webView。

不要忘记设置你的html来源:

let testHTML = Bundle.main.path(forResource: "privacy", ofType: "html")