ios - 将 UICollectionViewController 的 View 添加到 super View "programmatically"

标签 ios objective-c uicollectionview

我正在尝试执行一个简单的任务,以编程方式将 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/

相关文章:

ios - 如何使用 NSPredicate 从 CoreData 中删除选定数量的行?

ios - xcode 7 中没有 Retina 4 选项,那么如何在 Assets 中设置全屏图像以使其在 4s/5s 和 iPhone 6 中正确显示?

ios - 观看连接 : didReceiveMessage not called

ios - 如何在使用 `layoutAttributesForElements` 时为 Collection View 布局更改设置动画?

c# - UICollectionViewCell 定义 F#

ios - 添加照片到 MWPhotoBrowser

ios - IOS 应用的 swift 解析

ios - IOS捏合手势的手势绑定(bind)限制

iOS - 不能是连续或重复数字的 4 位整数的正则表达式?

ios - 为什么我不能在 tableview、iOS、objective c 中的 didSelectRowAtIndexPath 中隐藏/显示标签