UITableViewCell 在 UITableView 中不可见
Posted
技术标签:
【中文标题】UITableViewCell 在 UITableView 中不可见【英文标题】:UITableViewCell not visible in UITableView 【发布时间】:2017-11-08 12:45:44 【问题描述】:我在 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
如果我看不到自定义单元格,会出现什么问题?
【问题讨论】:
您是否设置了估算高度和/或行高?否则我相信它默认为 44pts。 检查cell的reuseIdentifier。如果给出正确与否。并尝试 unitTable.register(UINib(nibName: "yourIdentifier", bundle: nil), forCellReuseIdentifier: "yourIdentifier") 。注册一个笔尖 也许你已经将它作为一个类而不是 Nib 出列。正如 Arpita 提到的,尝试将其注册为 Nib @arpita 没错!我刚刚放了 unitTable.register(UINib(nibName: "UnitCell", bundle: nil), forCellReuseIdentifier: "UnitCell") 并按预期工作。并且还删除了 self.unitTable.register(UnitCell.self, forCellReuseIdentifier: "UnitCell") 没错@Micgal 【参考方案1】:在 viewDidLoad 中尝试以下操作
unitTable.register(UINib(nibName: "yourCellClassName", bundle: nil), forCellReuseIdentifier: "UnitCell")
【讨论】:
【参考方案2】:您不能直接使用单元格的类名,因为您使用的是单元格的 XIB,因此您必须使用如下所示的 nib 名称注册单元格。
let nib = UINib(nibName: "YourTableViewCellNibName", bundle: nil)
self.unitTable.register(nib, forCellReuseIdentifier: "UnitCell")
【讨论】:
【参考方案3】:将注册单元格更改为表格代码,如下所示。
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
【讨论】:
以上是关于UITableViewCell 在 UITableView 中不可见的主要内容,如果未能解决你的问题,请参考以下文章
如何将文本包装在 Iphone 的 UITable 单元格中?
在 cellForRowAtIndexPath 中返回不同的 UITableViewCell 类型
UITableViewCell:图片出现在 Cell View 后面