将自定义单元格设置为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:
我已尝试过所有内容但仍然出错。
感谢。
答案 0 :(得分:3)
在故事板上添加UICollectionViewController
作为嵌入式容器视图控制器时出现此问题。
我将容器视图控制器的自定义类切换为Collection View Controller。但是该视图控制器中的view
属性仍然是Xcode样板UIView
。
删除故事板上控制器中的默认UIView
,并将其替换为UICollectionView
。应自动重新连接插座。
答案 1 :(得分:2)
我认为问题可能是因为你继承了UICollectionViewController,你不必再指定了,因为它已经实现了它。尝试顶部删除它,看看它是否能解决您的错误。
同样在Identity Inspector中,确保为相应的View Controller设置类KidsDetailViewController。
答案 2 :(得分:2)
Jeff Kelley的回答here为我犯了同样的错误。
当您使用UICollectionViewController时,视图插座需要 连接到故事板中的UICollectionView;如果是的话 另一个类的UIView,它会崩溃。
所以,我使用UIViewController和UICollectionView作为其属性,并与nib连接。
答案 3 :(得分:1)
如何使用nib(.xib)文件设置集合视图控制器。
通过从“用户界面”部分选择“清空”模板来添加新文件。从对象库中拖出UICollectionView对象。
1)关联nib哪个集合视图控制器类。
在文档大纲(左侧部分)的“占位符”下,选择“文件所有者”。显示Identity Inspector并将类下拉列表设置为UICollectionViewController的子类。
2)将nib与UICollectionView相关联。
同样,在文档大纲(左侧部分)的“占位符”下,选择“文件所有者”。右键单击它以查看“Outlets”和“Referencing Outlets”显示。 “Outlets”下的两个选项是“view”和“collectionView”。它反直觉,但从“视图”选择拖到文档大纲中的UICollectionView对象。
**如果你从“collectionView”选项中拖动,你将得到'loaded the“your_collection_view_controller”nib但没有得到UICollectionView'错误。
当你构建并运行时,代码现在应该“加载”nib并“获取”UICollectionView。