如何将单独的 xib 单元格注册到多个表格视图?

Posted

技术标签:

【中文标题】如何将单独的 xib 单元格注册到多个表格视图?【英文标题】:How to register a separate xib cells to multiple tableviews? 【发布时间】:2018-09-07 00:53:40 【问题描述】:

我有两个带有两个 xib 单元格的表格视图。如何在第二个表中注册第二个 xib 单元格?

它一直从第一个表中放入单元格。

这是我的代码:

let cellNib = UINib(nibName: "FirstTableViewCell", bundle: nil)
self.tableView.register(cellNib, forCellReuseIdentifier: "cell")

let cellNib2 = UINib(nibName: "SecondViewCell", bundle: nil)
self.secondTableView.register(cellNib2, forCellReuseIdentifier: "cell2")

这是我的 cellForRowAt 函数:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 


if tableView == tableView 
 let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! FirstTableViewCell



    return cell


else  
    let cell2 = self.secondTableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) as! SecondViewCell

     return cell2



【问题讨论】:

你是什么意思“它一直在第一个xib”?你是说第一个表视图单元格正在为两个表注册吗?你怎么知道的? 是的,第一个正在为两者注册。当我运行它时,第一个单元格出现在两个表中。标识符为“cell”的那个 你能告诉我们你的cellForIndexAt函数吗?请将代码 sn-p 添加到您的问题中 编辑我的代码 sn-p 添加 cellForRowAt 【参考方案1】:

在你的cellForRowAt函数中,有一个叫tableView的局部变量(看函数头,tableView是第一个参数的名字),所以检查tableView == tableView总是会返回true .这就是为什么您将始终获得第一个单元格的原因。

将该行替换为:

if tableView == self.tableView

通过添加self,您将直接引用类变量tableView 而不是局部变量。希望这会有所帮助。

【讨论】:

以上是关于如何将单独的 xib 单元格注册到多个表格视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何链接两个xib?

访问,从单个 nib 获取对多个视图的引用

如何将 xib 的子视图显示到另一个 xib 的表格单元加载中

如何在同一个xib中放置自定义单元格和表格视图?

如何在表格视图单元格中添加 xib 文件?

滚动表格视图时文本字段为空