设置从 HTML 字符串生成的 UITableViewCell 标签

Posted

技术标签:

【中文标题】设置从 HTML 字符串生成的 UITableViewCell 标签【英文标题】:Set UITableViewCell label to be generated from HTML string 【发布时间】:2015-02-19 17:38:13 【问题描述】:

我在 swift 上使用 TableView,我想知道如何将 UITableViewCell 标签设置为从 html 字符串生成。

我知道如何使用它在单元格标签上显示文本:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

    var articlesInSection = xmlParser.channelsArray[indexPath.section]["articles"] as [AnyObject]

    //articleWebView.loadHTMLString(activeItem, baseURL: nil)

    cell.textLabel?.text = articlesInSection[indexPath.row]["title"] as NSString

    return cell

但我有一个我想要呈现的 HTML 而不是文本,类似于 loadHTMLString 函数

我该怎么做?

【问题讨论】:

【参考方案1】:

您可以使用 NSAttributedString 显示来自 html 的文本,但我认为这在表格视图单元格中不是非常有效的解决方案,因为它可能会导致滚动时出现延迟和/或加载时出现延迟

var attrStr = NSAttributedString(
            data:yourHTMLString.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
            options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
            documentAttributes: nil,
            error: nil)
cell.textLabel?.attributedText = attrStr

【讨论】:

谢谢!它有效,我只需要它用于测试应用程序,因为我没有原始应用程序代码,所以滞后对我来说很好 我可以对节标题做同样的事情吗? 是的,你可以为任何标签做到这一点【参考方案2】:

您可以使用AttributedString 样品在Swift 5

do 
   let attrStr = try NSAttributedString(data: htmlStr.data(using: .unicode, allowLossyConversion: true)!, options: [.documentType : NSAttributedString.DocumentType.html], documentAttributes: nil)
   cell.textLabel?.attributedText = attrStr
 catch 
   print(error)

【讨论】:

以上是关于设置从 HTML 字符串生成的 UITableViewCell 标签的主要内容,如果未能解决你的问题,请参考以下文章

特殊字符编码

php如何通过点击按钮生成新页面

使用 PrepareForSegue 方法从 UITableView 传递到另一个

通过标识符设置表格视图单元格高度 - Swift

界面生成器中的 UITableViewHeaderFooterView

EXT JS 如何从后台生成一个table表格 在线等 30分