在我的应用程序中,我认为创建一个UITableViewContoller的子类(称之为GenericTableViewContoller)是一个好主意,它有一些在Storyboard中创建的原型单元格,可以在整个应用程序中重复使用。
现在,我想要做的是创建GenericTableViewContoller的子类(比如说SpecialTableViewController),它在Storyboard中创建了一些仅在SpecialTableViewController中使用的原型单元格。
因此,我的主故事板中有两个场景,一个用于GenericTableViewContoller,另一个用于SpecialTableViewController,每个场景都有自己的原型单元格。
我遇到的问题是,当我调用dequeueReusableCellWithIdentifier时,SpecialTableViewController获取nil原型单元:对于在GenericTableViewContoller场景中声明的单元标识符。在SpecialTableViewController场景中声明的单元格出现就好了。
这是预期的行为(我有一种奇怪的怀疑)?我是否必须调用registerNib:forCellReuseIdentifier:在SpecialTableViewController中实际从其他场景中注册它们?有什么简单的方法来解决这个问题吗?
答案 0 :(得分:0)
这是预期的行为(我有一种奇怪的怀疑)?
是的,这是预期的行为。这里的核心概念是故事板是一个对象实例设计者,而不是一个类设计师。例如,您可以自由制作三个场景,每个场景具有相同的视图控制器类,但都具有不同的视图布局。
在不同的表视图实例之间共享原型表单元格布局的简单方法,不是将它们放入自己的XIB中,而是使用-registerNib:forCellReuseIdentifier:和手动segues。