选择 UITableViewCell 后如何显示 UIWebView?

Posted

技术标签:

【中文标题】选择 UITableViewCell 后如何显示 UIWebView?【英文标题】:How to show a UIWebView after UITableViewCell is selected? 【发布时间】:2017-07-13 20:41:41 【问题描述】:

我目前将我的根视图控制器作为带有 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。

【问题讨论】:

您的网页视图在哪里?在另一个视图控制器中或与您的表相同?这是通过情节提要还是以编程方式实现的? @GIJOW 以编程方式。我根本没有 WebView。我需要创建一个,但我不确定在哪里 但是您想在与您的表格相同的视图控制器中显示它吗? 是的,如果保留 NavigationController 【参考方案1】:

您的 cmets 很难知道“是否保留 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")

【讨论】:

我不能再回到我的 TableView,但我想我可以解决这个问题。您的回答非常清楚。 很高兴为您提供帮助。我刚刚更新了“更迅速的 3”的答案。希望对你有帮助

以上是关于选择 UITableViewCell 后如何显示 UIWebView?的主要内容,如果未能解决你的问题,请参考以下文章

如何选择并突出显示 UICollectionView,如 UITableViewCell?

如何在 UITableView 的编辑模式下只显示复选标记选择而不选择整个 UITableViewCell?

选择行时禁用uitableviewcell中的突出显示按钮

选择后,您可以为 UITableViewCell 上的高度变化设置动画吗?

突出显示/选择时的 UITableViewCell 背景颜色

如何显示 UITableViewCell 附件复选标记