我正在使用xib文件创建自定义单元。重用标识符在xib文件中设置。然后,我有一个惰性变量,只能用来注册一次笔尖:
private lazy var registerNib: Bool = {
let nib = UINib(nibName: "CustomTableViewCell", bundle: nil)
self.tableView.register(nib, forCellReuseIdentifier: "Custom")
return true
}()
在单元格创建过程中,我只是使用了惰性变量,并使用了xib文件中相同的重用标识符从表视图中将该单元出队:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let _ = self.registerNib
let cell = tableView.dequeueReusableCell(withIdentifier: "Custom") as! CustomCell
return cell
}
但是解包失败并且应用程序崩溃。
tableView.dequeueReusableCell返回nil
由于某种原因。...
答案 0 :(得分:1)
有两种名为dequeueReusableCell
的方法。
但是解包失败并且应用程序崩溃。 tableView.dequeueReusableCell由于某些原因返回。...
您使用的是第一个,文档中明确指出
返回值
具有关联的
UITableViewCell
或identifier
的{{1}}对象,如果在可重用单元格队列中不存在这样的对象。
您可能要使用后者。 更改行:
nil
收件人:
let cell = tableView.dequeueReusableCell(withIdentifier: "Custom") as! CustomCell
答案 1 :(得分:0)
您需要像这样在viewDidLoad():
方法中注册您的笔尖对象
let nib = UINib(nibName: "CustomTableViewCell", bundle: nil)
tableView.register(nib, forCellReuseIdentifier: "Custom")
还,您是否在情节提要中设置了单元重用标识符?