我有一个名为' ImageViewController.xib"的XIB;其中包含一个集合视图。我已经在xib内的这个集合视图上设置了我想要的集合视图布局。
尝试运行我的应用时,收到错误消息:
'UICollectionView must be initialized with a non-nil layout parameter'
我在ImageViewController中使用它:
-(id) initWithImages:(NSArray *)imagesUrls
{
if (self = [super initWithCollectionViewLayout:self.collectionViewLayout]) {
self.imageUrls = [[NSArray alloc] initWithArray:imagesUrls];
}
[self.collectionView registerNib:[UINib nibWithNibName:@"ImageCell" bundle:nil] forCellWithReuseIdentifier:@"Cell"];
return self;
}
我只想使用我在XIB中设置的布局而不是以编程方式创建一个。
答案 0 :(得分:0)
您可以将collectionViewLayout添加到viewDidLoad中的collectionView。
创建collectionViewLayout,例如:
UICollectionViewFlowLayout * flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flowLayout.minimumLineSpacing = 5;
flowLayout.minimumInteritemSpacing = 5;
flowLayout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);
然后我们将其设置为collectionView
的流布局_collectionView.collectionViewLayout = flowLayout;
我在一个很好的教程中找到了这个答案,可以找到here
希望这会有所帮助
答案 1 :(得分:-1)
尝试在您的视图中添加此功能。使用Load方法执行其操作以摆脱它
UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc]init];
flowLayout.itemSize = CGSizeMake(100, 100);
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];
这对我有用...你看到错误告诉你布局不应该是nil,Layout的框架是相对于它的superview设置的,布局在初始化期间传递给父类,检查你的CollectionViewLayout是否是“空”