Ios 带有xib的UICollectionViewController子类

Ios 带有xib的UICollectionViewController子类,ios,objective-c,xib,Ios,Objective C,Xib,我正在尝试创建一个自定义的UICollectionViewController子类 我使用Xcode的向导创建了它: 单击Finish后,我得到这个.xib文件: 当我尝试从另一个类调用它时,如下所示: MyCollectionViewController *myCollectionViewController = [MyCollectionViewController new]; [self addChildViewController:myCollectionViewControlle

我正在尝试创建一个自定义的
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]];
它不会崩溃,但存在一些问题:

  • 如果它已经在
    .xib
    文件中,为什么需要
    CollectionViewLayout
  • 我不想在MyCollectionViewController之外创建布局;在这种情况下,子类化的目的是什么
  • 整个视图显示为空白

  • 如果在xib中指定了视图控制器的UI,则必须通过调用
    [[MyCollectionViewController alloc]initWithNibName:@“MyCollectionViewController”inBundle:[NSBundle mainBundle]]
    来实例化它(或者以任何方式获取捆绑包)。当您使用此构造函数时,视图控制器的出口将正确连接,布局将根据xib中的内容进行设置。

    xib大多是老式的,视图控制器更是如此。将它们用于视图,有时用于单元格。由于要创建视图控制器,请改用情节提要。这有一些优点:您可以在故事板中配置VC(及其视图);你可以使用自动布局;您可以将相关的视图控制器放在同一情节提要中


    打开情节提要文件后,拖出一个新的UIViewController(本例中为UICollectionViewController),然后在第三个属性选项卡(通常位于右侧)上设置自定义类。

    我知道,但我无法轻松切换到情节提要。另外,整个项目应该有一个故事板?不,绝对不是每个项目一个。它们变得太不可维护、太笨拙、太难合并更改。我将其用于相关的风险投资,例如,使用“最近帐户”登录风险投资的帐户。一个项目中有几个。另外,您不必大量切换到故事板,您可以保留现有的XIB。