1

在我的应用程序中,我认为创建 UITableViewContoller 的子类(称为 GenericTableViewContoller)是一个好主意,它有一些在 Storyboard 中创建的原型单元格,可在整个应用程序中重用。

现在,我想做的是创建一个 GenericTableViewContoller 的子类(比如 SpecialTableViewController),它具有在 Storyboard 中创建的一些其他原型单元格,这些单元格仅在 SpecialTableViewController 中使用。

因此,我的主情节提要中有两个场景,一个用于 GenericTableViewContoller,一个用于 SpecialTableViewController,每个场景都有自己的原型单元集。

我遇到的问题是,当我为 GenericTableViewContoller 场景中声明的单元格标识符调用 dequeueReusableCellWithIdentifier 时,SpecialTableViewController 获取 nil 原型单元格。在 SpecialTableViewController 场景中声明的单元格出列就好了。

这是预期的行为吗(我有一个奇怪的怀疑)?我是否必须在 SpecialTableViewController 中调用 registerNib:forCellReuseIdentifier: 才能真正让它们从另一个场景中注册?有什么简单的方法来解决这个问题吗?

4

1 回答 1

0

这是预期的行为吗(我有一个奇怪的怀疑)?

是的,这是预期的行为。这里的核心概念是情节提要是对象实例设计器,而不是类设计器。例如,您可以自由制作三个场景,每个场景都具有相同的视图控制器类,但都具有不同的视图布局。

没有一种简单的方法可以在不同的表视图实例之间共享原型表单元格布局,除非将它们放入自己的 XIB 中,并使用 -registerNib:forCellReuseIdentifier: 和手动 segues。

于 2012-06-09T18:56:16.260 回答