我正在尝试执行一个简单的任务,以编程方式将 UICollectionView 添加到主视图。
我首先创建了一个“PhotosViewController.h/h/xib”文件(类型为 UIViewController),删除了给定的 View 并添加了一个 UICollectionView 作为该 Controller 的主视图,然后进行了更改“PhotosViewController.h”的父类(super class)到 UICollectionViewController。
我遵循了本教程中给出的前 6 个步骤: http://skeuo.com/uicollectionview-custom-layout-tutorial 然后跳转到第 14 步。我要做的只是在用户单击分段控制按钮时调出此 View 。
if ([segmentedControl selectedSegmentIndex]==3){
//Photos View Controller
pvc=[[PhotosViewController alloc] init];
NSLog(@"Photos segment is chosen!");
[[self view] addSubview:pvc.view]; **//Line 5**
}
但是程序在到达第 5 行 时抛出异常。
这是我收到的日志消息。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'UICollectionView must be initialized with a non-nil layout parameter'
看起来,我在这里遗漏了一些非常基本的东西。在过去的一个小时里,我一直在寻找解决这个问题的任何一种方法,但我找不到任何东西。
非常感谢任何帮助。
最佳答案
[[PhotosViewController alloc] init];
我假设这是您创建 Collection View Controller 的地方。此类的指定初始化程序是 initWithCollectionViewLayout:
,您将在其中传递布局对象。你没有传递一个,所以它提示。尝试使用该初始化器,或者,在您的子类中,确保调用它而不是 [super init],并传入一个新的流布局对象。
关于ios - 将 UICollectionViewController 的 View 添加到 super View "programmatically",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914458/