Swift:UITableViewCell中的多个detailTextLabel行,带有UITableViewCellStyle.Subtitle

时间:2016-06-25 14:11:59

标签: swift uitableview

我有一个tableViewCell

let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")

具有以下设置:

    cell.textLabel?.font = UIFont.boldSystemFontOfSize(15.0)
    cell.textLabel?.text = titleString

    cell.detailTextLabel?.text = descriptionString
    cell.detailTextLabel?.numberOfLines = 0

descriptionString由一个HTML字符串组成。

我已经设置了

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

然而,当detailTextLabel大于1行时,这会导致显示混乱的tableview。 detailTextLabel包装到下一个tableview单元格。

这是什么解决方案? UITableViewAutomaticDimension似乎没有按预期工作。

1 个答案:

答案 0 :(得分:0)

表格视图中的多行标签单元格

首先定义

private let useAutosizingCells = true

  override func viewDidLoad() {
        super.viewDidLoad()

        if useAutosizingCells && tableView.respondsToSelector(Selector("layoutMargins")) {
            tableView.estimatedRowHeight = 88
            tableView.rowHeight = UITableViewAutomaticDimension
        }
}

// MARK: - UITableViewDataSource

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return array.count
}
 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath)     


        if useAutosizingCells && tableView.respondsToSelector(Selector("layoutMargins")) {
            cell.textLabel?.numberOfLines = 0
            cell.detailTextLabel?.numberOfLines = 0
        }

        return cell
    }