如何在 Storyboard 控制器中重用定义为原型单元的自定义 UITableViewCell

Posted

技术标签:

【中文标题】如何在 Storyboard 控制器中重用定义为原型单元的自定义 UITableViewCell【英文标题】:How to reuse custom UITableViewCell defined as a prototyped cell in Storyboard controller 【发布时间】:2014-06-12 17:24:44 【问题描述】:

我有两个不同 UITableViewControllers/TableViews 中项目的唯一单元格模板。 我需要的是定义一次,然后通过

在其他 UITableView 重用
UITableView.DequeueReusableCell(CellId);

问题是当我在不包含单元原型的 UITableView 上调用此方法时,我得到 NULL。

如何在多个表格控制器中重复使用我的原型单元格? 我想在情节提要中定义单元格模板,而不是 xib。

【问题讨论】:

【参考方案1】:

事实证明,重用单元格的唯一方法是使用 xib 设计它并在 tableview 中注册该 xib 和 cellid。

【讨论】:

我更喜欢使用 xib 来使 tableview 单元格可重用,因为在大多数情况下它是一个很好的解决方案。【参考方案2】:

只需将原型单元格复制粘贴到您需要的每个表格视图控制器中即可。

如果我理解你的问题,以一种标准和适当的方式,不可能从另一个表格视图中取出一个单元格,Apple 实现会自行处理这个机制。

【讨论】:

所以我唯一的选择是将其设计为单独的 XIB? 不,您可以直接在情节提要文件中执行此操作。拖放一个单元原型,使其成为您的自定义类的实例,并从右下角的菜单中添加一些元素作为子视图。 我的意思是没有复制/粘贴。复制/粘贴它是我将尝试的最后一件事 不,我不知道有其他方法可以做到这一点。实际上,这甚至非常有用:对于相同类型的单元格,无需更改一行代码,您可以以另一种方式排列元素,从一个控制器到另一个控制器。【参考方案3】:

将 xib 用于可重复使用的单元格是有益的,而单元格设计在整个应用程序中是固定的。但是当有条件要求或设计或功能略有变化时,tableview cell 的剩余设计和功能相同,在这种情况下,如果您仍想重用代码,则可以子类化 tableview cell 类。

【讨论】:

以上是关于如何在 Storyboard 控制器中重用定义为原型单元的自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

如何响应从 xib 加载的自定义视图中发生的操作?

iOS如何获取对带有segue的storyboard容器中嵌入的视图控制器的引用?

iOS,在我的 LaunchScreen Storyboard 的资产目录中重用 AppIcon?

在 UITabBarController 中重新排序视图控制器,所有这些都在 Storyboard 中定义

Storyboard xib 实时视图在左上角呈现所有子视图

IOS / Objective-C / Storyboard:从左到右的自定义Segue在视图控制器之间创建黑条