我正在尝试创建自定义UICollectionViewController
子类。
我是使用Xcode的向导创建的:
点击Finish
后,我收到了这个.xib
文件:
当我尝试从另一个类中调用它时:
MyCollectionViewController *myCollectionViewController = [MyCollectionViewController new];
[self addChildViewController:myCollectionViewController];
[self.view addSubview:myCollectionViewController.view];
我收到此错误:
UICollectionView must be initialized with a non-nil layout parameter
如果我使用:
MyCollectionViewController *myCollectionViewController = [[MyCollectionViewController alloc] initWithCollectionViewLayout:[UICollectionViewFlowLayout new]];
它没有崩溃,但有一些问题:
CollectionViewLayout
文件中已有.xib
,为什么需要MyCollectionViewController
?background-color: green
之外创建布局;在这种情况下,子类化的目的是什么?答案 0 :(得分:1)
如果在xib中指定了视图控制器的UI,则必须通过调用[[MyCollectionViewController alloc] initWithNibName:@"MyCollectionViewController" inBundle:[NSBundle mainBundle]]
来实例化它(或者你得到你的包)。当您使用此构造函数时,视图控制器的出口将正确连接,并根据xib中的内容设置布局。
答案 1 :(得分:0)
XIB 主要是老派,对于视图控制器更是如此。将它们用于视图,有时用于单元格。由于您要创建视图控制器,请改用故事板。这有一些优点:您可以在故事板中配置VC(及其视图);你可以使用自动布局;并且您可以将相关的视图控制器放在同一个故事板中。
打开storyboard文件后,拖出一个新的UIViewController(或本例中为UICollectionViewController),并在第三个属性选项卡(通常在右侧)上设置自定义类。