我在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
}
}
如果我看不到自定义单元格会出现什么问题?
答案 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
}