在Nib文件中添加UICollectionView时,应用程序崩溃

时间:2016-02-01 13:45:21

标签: ios objective-c

我正在使用HMSegmentedControl框架构建实验应用程序。在这个应用程序上,我正在尝试将UICollection视图添加到xib文件上的视图中,但我遇到了麻烦。应用程序崩溃了,我明白了:

2016-02-01 10:23:40.693 SegmentControlExperimentation[1328:49671] *** Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.30.14/UICollectionView.m:3690
2016-02-01 10:23:40.699 SegmentControlExperimentation[1328:49671] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'could not dequeue a view of kind: UICollectionElementKindCell with identifier MyCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

我一直在寻找它,但我无法找到解决方案。 所以我创建了一个github仓库,并在此链接上克隆了我的代码:https://github.com/nascimentorafael/SegmentControlExperimentation 这是一个非常小而简单的代码。如果运行它,将导致此崩溃。所以看一下ViewController类和view.xib。

我希望有人能帮助我。

1 个答案:

答案 0 :(得分:1)

我浏览了你的github存储库,发现你没有以正确的方式练习UICollectionView。但是,如果您只想避免崩溃,只需注释掉代码102-105& ViewController.m中的第128行

如果您想在view.xib中放置您的collectionView,则需要在view.h中插入此行。

@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;

在view.xib中引用上面的插座并在ViewController.m中注释掉第35-37行

然后在 - (void)viewDidLoad {}

中为View *视图添加以下代码


    UINib *cellNib = [UINib nibWithNibName:@"CustomCollectionViewCell" bundle:nil];
    [view.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MyCell"];
    view.collectionView.delegate = self;
    view.collectionView.dataSource = self;

请理解,上述建议是您当前存储库的最小更改,可能不是最佳做法。有许多事情需要加以考虑,根据每种情况,组合会有很大差异。