簡體   English   中英

使用XIB中創建的CollectionView的CollectionViewLayout?

[英]Use CollectionViewLayout of a CollectionView created in XIB?

我有一個名為“ 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中設置的布局,而不能以編程方式進行布局。

您可以將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;

我在一個很好的教程中找到了這個答案,可以在這里找到

希望這會有所幫助

嘗試在您的視圖中添加此內容,Load方法是否執行了我擺脫它的操作

UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc]init];
flowLayout.itemSize = CGSizeMake(100, 100);
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];

這對我有用...您看到什么錯誤告訴您布局不應該為nil,布局的框架相對於其父視圖設置,布局在初始化期間傳遞給父類,檢查您的CollectionViewLayout是否為“ Null”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM