自定义单元格内容不显示 Swift
Custom cell content doesn't show Swift
我想创建自定义 table 视图。我有一个 UITableViewController:
class MainListView: UITableViewController{
var invoceList: [InvoceObject] = []
@IBOutlet var tbMain: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(CustomCell.self, forCellReuseIdentifier: "cell")
tbMain.delegate = self
self.tbMain.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.invoceList.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell
cell.lblBuyerName?.text = self.invoceList[indexPath.row].BUYER_NAME
cell.lblDate?.text = self.invoceList[indexPath.row].CREATED_AT
cell.lblPriceGross?.text = self.invoceList[indexPath.row].PRICE + " " + self.invoceList[indexPath.row].CURRENCY
cell.backgroundColor = UIColor(white: 1, alpha: 0.5)
return cell
}
}
还有我的 UITableViewCell class:
class CustomCell: UITableViewCell {
@IBOutlet weak var lblBuyerName: UILabel!
@IBOutlet weak var lblDate: UILabel!
@IBOutlet weak var lblPriceGross: 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
}
}
构建后我得到一个空单元格。我有很多行,例如 invoceList.count,但没有标签,它看起来是空的 table。我做错了什么?
如果单元格的内容在单独的 xib 文件中定义,您需要注册它,而不是 class - 如果您只注册 class,则不会创建实际标签,因为class 本身不会创建它们。
//Replacing CustomCellNibName with the name of your xib file
tableView.register(UINib.init(nibName: "CustomCellNibName", bundle: nil), forCellReuseIdentifier: "Cell")
如果单元格在故事板中作为原型单元格创建,则无需注册它,只需将 class 与故事板文件中的单元格相关联(在身份检查器选项卡下, Custom Class),并在 Attributes inspector 字段 Identifier.
下填写您要使用的名称(在本例中为 "Cell")
由于您使用的是 UITableViewController
,因此存在一个隐含的 tableView
属性 以及已连接的数据源和委托。你应该使用它来避免混淆。
如果您使用的是原型细胞,请删除行 self.tableView.register...
。
我想创建自定义 table 视图。我有一个 UITableViewController:
class MainListView: UITableViewController{
var invoceList: [InvoceObject] = []
@IBOutlet var tbMain: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(CustomCell.self, forCellReuseIdentifier: "cell")
tbMain.delegate = self
self.tbMain.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.invoceList.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell
cell.lblBuyerName?.text = self.invoceList[indexPath.row].BUYER_NAME
cell.lblDate?.text = self.invoceList[indexPath.row].CREATED_AT
cell.lblPriceGross?.text = self.invoceList[indexPath.row].PRICE + " " + self.invoceList[indexPath.row].CURRENCY
cell.backgroundColor = UIColor(white: 1, alpha: 0.5)
return cell
}
}
还有我的 UITableViewCell class:
class CustomCell: UITableViewCell {
@IBOutlet weak var lblBuyerName: UILabel!
@IBOutlet weak var lblDate: UILabel!
@IBOutlet weak var lblPriceGross: 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
}
}
构建后我得到一个空单元格。我有很多行,例如 invoceList.count,但没有标签,它看起来是空的 table。我做错了什么?
如果单元格的内容在单独的 xib 文件中定义,您需要注册它,而不是 class - 如果您只注册 class,则不会创建实际标签,因为class 本身不会创建它们。
//Replacing CustomCellNibName with the name of your xib file
tableView.register(UINib.init(nibName: "CustomCellNibName", bundle: nil), forCellReuseIdentifier: "Cell")
如果单元格在故事板中作为原型单元格创建,则无需注册它,只需将 class 与故事板文件中的单元格相关联(在身份检查器选项卡下, Custom Class),并在 Attributes inspector 字段 Identifier.
下填写您要使用的名称(在本例中为 "Cell")由于您使用的是 UITableViewController
,因此存在一个隐含的 tableView
属性 以及已连接的数据源和委托。你应该使用它来避免混淆。
如果您使用的是原型细胞,请删除行 self.tableView.register...
。