【问题标题】:How to show a UIWebView after UITableViewCell is selected?选择 UITableViewCell 后如何显示 UIWebView?
【发布时间】: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

标签: ios swift uitableview uiwebview


【解决方案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”的答案。希望对你有帮助
猜你喜欢
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多