无法从 UIViewController 导航到 UICollectionViewController

Posted

技术标签:

【中文标题】无法从 UIViewController 导航到 UICollectionViewController【英文标题】:Unable to Navigate From UIViewController to UICollectionViewController 【发布时间】:2015-02-09 09:05:35 【问题描述】:

我正在与UICollectionViewController 合作。当我使用 UINavigationControllerUIViewController 导航到 UICollectionViewController 时,出现消息异常:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'UICollectionView must be initialized with a non-nil layout parameter.

我不知道为什么会这样。

我使用的是简单的UICollectionViewController,没有任何编码(即默认创建的文件)。它的文件名为“NewCollectionViewController.m”和“NewCollectionViewController.h”。

我的 Xcode 版本是 6.1.1。

我的导航代码是:

NewCollectionViewController *CVController = [[NewCollectionViewController alloc] init];
[self.navigationController pushViewController:CVController animated:YES];

我只想从UIViewController 导航到UICollectionViewController

【问题讨论】:

你在用故事板吗? 【参考方案1】:

我想这是你第一次玩UICollectionViewController

正如异常原因所说,UICollectionView 必须使用非零布局参数进行初始化。 UICollectionViewController 正确的初始化方法是

 - (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout

【讨论】:

【参考方案2】:

检查具有NavigationController 的根视图并确保设置了storyBoard Identifier

NewCollectionViewController *CVController = (NewCollectionViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"StoryBordIdentifier"]
[self.navigationController pushViewController:CVController animated:YES];

Push to new ViewController

【讨论】:

【参考方案3】:

你必须添加 [self.collectionView registerClass:[UICollectionView class] forCellWithReuseIdentifier:@"MyCell"];

在 NewCollectionViewController 类中

【讨论】:

【参考方案4】:

创建UICollectionViewCell 类和UICollectionViewFlowLayout 类并将它们添加到您的UICollectionViewController 类中。

【讨论】:

以上是关于无法从 UIViewController 导航到 UICollectionViewController的主要内容,如果未能解决你的问题,请参考以下文章

无法以编程方式导航到另一个 UIViewController iOS

如何使用 PushViewController 方法从 UIViewClass 导航到 UIViewController 类

从 UISplitViewController 中的 Detail 视图控制器导航到正常的全尺寸 UIViewController

从 swiftUI 中的一个嵌入式 UIViewController 导航到 swift UI 中的另一个嵌入式 UIViewcontroller

如何从 UIView 导航 UIViewController

从 UIAlertController 按钮单击导航到 ViewController