Objective c 带有UICollectionView的基本UIViewController

Objective c 带有UICollectionView的基本UIViewController,objective-c,uiviewcontroller,uicollectionview,uicollectionviewcell,xcode-storyboard,Objective C,Uiviewcontroller,Uicollectionview,Uicollectionviewcell,Xcode Storyboard,我有一个UIViewController,我想用它作为其他视图控制器的基础控制器。基本控制器有一个UICollectionView,其中包含所有UICollectionViewCell原型和在情节提要中设计的一些其他存根视图 所有子视图控制器都有一个共同点,即UICollectionView,并且在情节提要中有自己的视图。我想使用在基本视图控制器的集合视图中设计的原型单元来填充子视图控制器的UICollectionView。我不想将粘贴原型单元格从基本控制器的集合视图复制到子控制器集合视图 基本

我有一个UIViewController,我想用它作为其他视图控制器的基础控制器。基本控制器有一个UICollectionView,其中包含所有UICollectionViewCell原型和在情节提要中设计的一些其他存根视图

所有子视图控制器都有一个共同点,即UICollectionView,并且在情节提要中有自己的视图。我想使用在基本视图控制器的集合视图中设计的原型单元来填充子视图控制器的UICollectionView。我不想将粘贴原型单元格从基本控制器的集合视图复制到子控制器集合视图

基本控制器对单元格选择执行一些操作,这些操作对所有子控制器都是通用的。子控制器应该能够从基本控制器请求任何原型单元,子控制器将使用单元标识符决定填充哪个单元

我应该能够使用脚本标识符实例化子控制器而不是基本控制器。我想在故事板上做最多的事情。 如何做到这一点?请建议或其他更好的方法


我正在Objective-C中编程。

在挖掘了很多之后,我发现不可能重复使用原型UICollectionViewCell,因此我最终为每个集合视图单元格创建了单独的XIB。 这就是我所做的:

  • 为集合视图单元格创建了XIB

  • 编写了一个基类BaseViewController,它的.h文件中声明了UICollectionView IBOutlet。BaseViewController类确认UICollectionViewDelegate和UICollectionViewDataSource协议

    2.1在BaseViewController viewDidLoad方法中,将所有单元XIB注册到UICollectionView

    2.2实现了处理一般事件的委托和数据源方法。如果需要,子类可以重写这些方法并执行特定任务

  • 在序列图像板中创建具有UICollectionView的子视图控制器。 3.1已将UICollectionView连接到.h文件中定义的super的UICollectionView IBOutlet

  • 现在全部完成!现在,我可以将在super中注册的任何单元格出列,或者如果子视图控制器需要一些特定的单元格,它可以在storyboard中自己的UICollectionView中对它们进行原型化,并完成这项工作。 在我的案例中,didSelectItem大多数时候都在基类中执行一些通用操作,这对所有子视图控制器都是通用的,所以我不实现它,或者如果想执行一些通用操作之外的其他操作,我实现方法并调用super的实现,然后再完成我的工作。所有与单元大小和布局相关的方法都由基本视图控制器实现。现在,我可以用最少的代码和适当的事件处理创建一个新的具有集合视图的子视图控制器


    希望这对别人有帮助。谢谢。

    我的问题与性能无关,而是与代码结构和事件处理有关。上面的答案为我节省了很多时间,因为我没有在故事板的collectionView中创建任何原型单元,也没有在拥有collectionView的childViewController中处理任何与大小相关的内容。在任何时候,我必须在任何collectionViewCell中进行更改,我会转到它的XIB并更改它。与此相反,如果我在所有CollectionView中复制粘贴的原型单元格,我必须更改每个单元格。