向Tableview单元格添加按钮

时间:2018-04-22 07:07:38

标签: ios swift uitableview

好的,我正在尝试向表格视图单元格添加一个按钮。我的表格视图单元格有一个图像,标签和一个按钮。我将按钮设置为隐藏在故事板中。现在我试图显示标签文本被截断的按钮,我在故事板中将标签上的行数设置为3。它可以正常工作但是当我向上和向下滚动时,某些标签文本没有被截断的单元格会显示一个按钮。为什么呢?

这是我的手机文件的外观。

class ItemCell: UITableViewCell {

@IBOutlet weak var itemImageView: UIImageView!
@IBOutlet weak var itemTitleLabel: UILabel!
@IBOutlet weak var itemDetailLabel: UILabel!
@IBOutlet weak var moreButton: UIButton!

var item: Item? {
    didSet {
        configureCell()
    }
}

private func configureCell() {
    guard let item = item else { return }
    itemImageView.image = item.image
    itemTitleLabel.text = item.name
    itemDetailLabel.text = item.description


    if itemDetailLabel.isTruncated  {
        moreButton.isHidden = false
    } else {
        moreButton.isHidden = true
    }
}

extension UILabel {
var isTruncated: Bool {

    guard let labelText = text else {
        return false
    }

    let labelTextSize = (labelText as NSString).boundingRect(
        with: CGSize(width: frame.size.width, height: .greatestFiniteMagnitude),
        options: .usesLineFragmentOrigin,
        attributes: [.font: font],
        context: nil).size

    return labelTextSize.height > bounds.size.height
}
}

这就是我的cellForRowAt的样子。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath) as? ItemCell else {
        return UITableViewCell()
    }

    let item = categories[indexPath.section].items[indexPath.row]

    cell.item = item

    print("Name: \(item.name)\nSection: \(indexPath.section)\nRow: \(indexPath.row)\nisTruncated: \(cell.itemDetailLabel.isTruncated)\n")



    return cell
}

0 个答案:

没有答案