无法从 UIViewController 导航到 UICollectionViewController
Posted
技术标签:
【中文标题】无法从 UIViewController 导航到 UICollectionViewController【英文标题】:Unable to Navigate From UIViewController to UICollectionViewController 【发布时间】:2015-02-09 09:05:35 【问题描述】:我正在与UICollectionViewController
合作。当我使用 UINavigationController
从 UIViewController
导航到 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