UITableViewCell在UITableView

时间:2017-11-08 12:45:44

标签: ios iphone swift uitableview

我在ViewController上有一个UITableView。这是完整的代码

import UIKit

class UnitTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var unitTable: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.unitTable.register(UnitCell.self, forCellReuseIdentifier: "UnitCell")
        self.unitTable.delegate = self
        self.unitTable.dataSource = self

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = unitTable.dequeueReusableCell(withIdentifier: "UnitCell", for: indexPath) as! UnitCell
        cell.unitNameLbl?.text = "TEST"

        return cell
    }

}

但不幸的是我的自定义单元格不可见。我已经设置了绿色背景颜色以确保约束是正确的。 这是我的UnitCell代码

import UIKit

class UnitCell: UITableViewCell {
    @IBOutlet weak var unitNameLbl: UILabel?
    @IBOutlet weak var unitNumberLbl: 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
    }

}

如果我看不到自定义单元格会出现什​​么问题?

3 个答案:

答案 0 :(得分:3)

在viewDidLoad

中尝试以下操作
unitTable.register(UINib(nibName: "yourCellClassName", bundle: nil), forCellReuseIdentifier: "UnitCell") 

答案 1 :(得分:1)

您不能直接使用单元格的类名,因为您使用单元格的XIB,因此您必须使用如下所示的nib名称注册单元格。

    let nib = UINib(nibName: "YourTableViewCellNibName", bundle: nil)
    self.unitTable.register(nib, forCellReuseIdentifier: "UnitCell")

答案 2 :(得分:0)

将注册单元格更改为表格代码,如下所示。

override func viewDidLoad() {
        super.viewDidLoad()

        self.unitTable.register(UINib(nibName: "UnitTable", bundle: nil), forCellReuseIdentifier: "UnitCell") // nibName should be exact name of xib file of your custom cell.
        self.unitTable.delegate = self
        self.unitTable.dataSource = self

    }