我可以在多个tableView中使用单个原型单元吗?

我在两个不同的控制器有两个不同的tableviews。 但是我需要在其中显示的细胞看起来完全相同。 我在一个tableView和子类UiTableViewCell中创build了一个原型单元格。 现在,如果我想在不同的控制器中使用同一个单元格,我该如何使用它?

如果我只是在新的控制器中导入customCell文件,并使用故事板中给出的相同标识符取消它,它将无法正常工作。 它说

在 – [UITableView _configureCellForDisplay:forIndexPath:]断言失败

终止应用程序由于未捕获的exception“NSInternalInconsistencyException”,原因:'UITableView数据源必须从tableView:cellForRowAtIndexPath:'返回一个单元格

所以,显然这意味着,细胞是零。 那么我怎样才能从故事板实例化同一个单元格呢? 是否可能或者我必须为新表创build一个不同的customCell?

K ..我明白了。 首先,

我不能在两个不同的tableview中使用一个原型单元格。 但是,我可以在两个不同的tableview中使用相同的tableViewCell子类。

要实现它,只需要从一个控制器复制原型单元格,并将其粘贴为另一个tableview的原型单元格。 粘贴的tableview的类保持不变。 只需更改reuseIdentifier。 并使用它。

编辑:如果你的单元格有一个相当复杂的用户界面,那么更有意义的是单独为单元格创build单独的xib。 然后以表格的forms编程注册xib 。 这样,你将只有一个单元格的副本,更好地维护它,当用户界面发生变化时。

您可以在不同的视图控制器中使用相同的原型单元格,只需要将其从您devise的控制器的tableview中取出即可。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let viewControllerInWhichCellWasDefined = tabBarController?.viewControllers?[0] let cell = viewControllerInWhichCellWasDefined.tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath) return cell } 

如果您在XIB中创build自定义单元格,它应该可以正常工作。 但是,我怀疑这个单元格的identifier导致了这个问题。 尝试改变你的单元格的标识符为每个表视图控制器。

如果不是,您可能需要发布源代码

我在不同的应用程序中使用了相同的UITableViewCell。 只需将一个TableViewCell复制到另一个应用程序。 这是两个应用程序具有相同的布局等。 这些应用程序不属于同一个工作区。 设置工程很好,没有问题或错误..只是不知道如果这是很好的做法。