设置 UICollectionViewController 时出错 - 笔尖但没有获得 UICollectionView
Posted
技术标签:
【中文标题】设置 UICollectionViewController 时出错 - 笔尖但没有获得 UICollectionView【英文标题】:Error when set UICollectionViewController - nib but didn't get a UICollectionView 【发布时间】:2014-07-28 06:43:46 【问题描述】:将自定义单元格设置为 UICollectionViewController 时遇到问题。
这是我的代码。
KidsDetailViewController.h
#import <UIKit/UIKit.h>
@interface KidsDetailViewController : UICollectionViewController <UICollectionViewDataSource>
@property NSNumber *idCampana;
@property (weak, nonatomic) IBOutlet UICollectionView *grid;
@end
KidsDetailViewController.m
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
return [grid_kid count];
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
GridCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath];
cell.imageView.image = [UIImage imageNamed:self.truckImages[0]];
cell.prd_img.image = [UIImage imageNamed:@"ic_launcher_58x58"];
return cell;
GridCell.h
#import <UIKit/UIKit.h>
@interface GridCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *prd_img;
@end
GridCel.m
#import "GridCell.h"
@implementation GridCell
- (instancetype)initWithFrame:(CGRect)frameRect
self = [super initWithFrame:frameRect];
if (self)
// Initialization code
return self;
@end
这是错误。
*** Assertion failure in -[KidsDetailViewController loadView], /SourceCache/UIKit_Sim/UIKit-3283.1/UICollectionViewController.m:166
2014-07-28 02:25:18.874 Geelbe[7673:231598] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UICollectionViewController loadView] loaded the "jXd-Ir-mr4-view-0IK-5Q-NzC" nib but didn't get a UICollectionView.'
*** First throw call stack:
我什么都试过了,还是报错。
谢谢。
【问题讨论】:
按照这些步骤 1. 退出 Xcode 2. 转到派生数据的文件夹并删除所有内容 3. 打开 Xcode 并执行产品清理 4. 运行您的应用程序 你的笔尖是从那个类派生的吗?检查您的文件所有者。 【参考方案1】:我在故事板上添加 UICollectionViewController
作为嵌入式容器视图控制器时遇到了这个问题。
我将容器视图控制器的自定义类切换为集合视图控制器。但是该视图控制器中的 view
属性仍然是 Xcode 样板文件 UIView
。
删除情节提要上控制器中的默认UIView
,并将其替换为UICollectionView
。插座应该会自动重新连接。
【讨论】:
【参考方案2】:我认为问题可能是因为你继承自 UICollectionViewController,你不必再指定了,因为它已经实现了它。试试顶部删除它,看看它是否会修复你的错误。
同样在 Identity Inspector 中确保为相应的 View Controller 设置类 KidsDetailViewController。
【讨论】:
你能评价这个答案吗?删除什么?谢谢!【参考方案3】:Jeff Kelley 的回答 here 为我解决了同样的错误。
当你使用 UICollectionViewController 时,视图出口需要 连接到故事板中的 UICollectionView;如果是 另一个类的 UIView,会崩溃。
所以,我使用 UIViewController 和 UICollectionView 作为它的属性,并与 nib 挂钩。
【讨论】:
【参考方案4】:如何使用 nib (.xib) 文件设置集合视图控制器。
通过从“用户界面”部分选择“空”模板来添加新文件。从对象库中拖一个 UICollectionView 对象过来。
1) 将 nib 关联到哪个集合视图控制器类。
在文档大纲(左侧部分)的“占位符”下,选择“文件的所有者”。显示身份检查器并将类下拉菜单设置为 UICollectionViewController 的子类。
2) 将 nib 与 UICollectionView 关联。
同样,在文档大纲(左侧部分)的“占位符”下,选择“文件的所有者”。右键单击它以查看“插座”和“参考插座”显示。 “Outlets”下的两个选项是“view”和“collectionView”。它违反直觉,但从“视图”选择拖动到文档大纲中的 UICollectionView 对象。
** 如果您从“collectionView”选择中拖动,您将收到“已加载“your_collection_view_controller”nib 但未收到 UICollectionView”错误。
当您构建和运行时,代码现在应该“加载” nib 并“获取” UICollectionView。
【讨论】:
以上是关于设置 UICollectionViewController 时出错 - 笔尖但没有获得 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章
短视频运营短视频剪辑 ⑤ ( 视频素材使用 | 设置插入后的视频素材属性 | 设置画面 | 设置音频 | 设置变速 | 设置动画 | 设置调节 )
SeeMusicMIDI 编辑功能 ( 速度设置 | SoundFont 音源设置 | 混响强度设置 | 混响时间设置 | 力度增益设置 | 实时 MIDI 设置 )