UITableViewCell左侧的图像消失

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UITableViewCell左侧的图像消失相关的知识,希望对你有一定的参考价值。

我正在以编程方式设置简单的表视图。一切都没问题,除非我没有将图像设置为单元格的imageView并且只将backgroundColor选项设置为UIColor.black。它只是消失了,也许有人知道我的问题在这里?

    import UIKit

    class FriendRequestsController: UITableViewController {

    static let cellId = "cellId"
    static let headerId = "headerId"

    override func viewDidLoad() {
        super.viewDidLoad()

        navigationItem.title = "Friend Requests"

        tableView.separatorColor = UIColor.rgb(229, green: 231, blue: 235)
        tableView.sectionHeaderHeight = 26

        tableView.register(FriendRequestCell.self, forCellReuseIdentifier: FriendRequestsController.cellId)
        tableView.register(RequestHeader.self, forHeaderFooterViewReuseIdentifier: FriendRequestsController.headerId)
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 2
    }
    override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        cell.backgroundColor = UIColor.blue
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        var cell =  tableView.dequeueReusableCell(withIdentifier: FriendRequestsController.cellId)!

      //cell.imageView?.image = UIImage(named:"gandhi_profile")

        cell.imageView?.backgroundColor = UIColor.black

      return cell
    }

       override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 60
    }

    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: FriendRequestsController.headerId) as! RequestHeader

        if section == 0 {
            header.nameLabel.text = "FRIEND REQUESTS"
        } else {
            header.nameLabel.text = "PEOPLE YOU MAY KNOW"
        }

        return header
    }

     }

    class RequestHeader: UITableViewHeaderFooterView {

    override init(reuseIdentifier: String?) {
        super.init(reuseIdentifier: reuseIdentifier)
        setupViews()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    let nameLabel: UILabel = {
        let label = UILabel()
        label.text = "FRIEND REQUESTS"
        label.font = UIFont.systemFont(ofSize: 10)
        label.textColor = UIColor(white: 0.4, alpha: 1)
        return label
    }()

    let bottomBorderView: UIView = {
        let view = UIView()
        view.backgroundColor = UIColor.rgb(229, green: 231, blue: 235)
        return view
    }()

    func setupViews() {
        addSubview(nameLabel)
        addSubview(bottomBorderView)

        addConstraintsWithFormat("H:|-8-[v0]-8-|", views: nameLabel)
        addConstraintsWithFormat("V:|[v0][v1(0.5)]|", views: nameLabel, bottomBorderView)

        addConstraintsWithFormat("H:|[v0]|", views: bottomBorderView)
    }

     }

     class FriendRequestCell: UITableViewCell {

       override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
         super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)
    //    setupViews()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    }

}

所以在我添加背景颜色和删除图像的地方,它就消失了(

答案

据我说,你应该在FriendRequestCell方法得到cellForRowAt indexPath

请找到这个,

我为Cell创建了ListTableCell和xib,请在这里找到我的ListTableCell,

class ListTableCell: UITableViewCell {

    @IBOutlet weak var imgView: UIImageView!
    @IBOutlet weak var lblTemp: UILabel!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
}

在ViewController上,

override func viewDidLoad() {
    super.viewDidLoad()

    let nib = UINib(nibName: "ListTableCell", bundle: nil)
    tblList.register(nib, forCellReuseIdentifier: "ListTableCell")

    getItems()
}

func getItems() {
    for i in 0...20 {
        arrItems.append("Test (i)")
    }
}


extension Tab2VC: UITableViewDataSource {
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return arrItems.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ListTableCell", for: indexPath) as! ListTableCell
        //cell.imgView.image = #imageLiteral(resourceName: "yelp")
        cell.imgView.backgroundColor = UIColor.red
        cell.lblTemp.text = arrItems[indexPath.row]
        return cell
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 60
    }
}

它对我来说很好,请尝试这个。

以上是关于UITableViewCell左侧的图像消失的主要内容,如果未能解决你的问题,请参考以下文章

滚动时 UITableViewCell 的选定按钮消失

将 UITableViewCell 引用传递给其他 VC 使其消失

iOS UITableViewCell 配件在左侧?

如何为选择多行时使用的 UITableViewCell 图像蒙皮?

更改 UITableViewCell 附件后 UITableViewCellAccessoryDe​​tailDisclosureButton 消失

UITableViewCell 框架仅在滚动后更新