【问题标题】:Use CollectionViewLayout of a CollectionView created in XIB?使用在 XIB 中创建的 CollectionView 的 CollectionViewLayout?
【发布时间】:2014-07-24 12:40:07
【问题描述】:

我有一个名为“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 中设置的布局,而不是以编程方式制作。

【问题讨论】:

    标签: ios objective-c xcode uicollectionview uicollectionviewlayout


    【解决方案1】:

    可以在viewDidLoad中将collectionViewLayout添加到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

    希望这会有所帮助

    【讨论】:

      【解决方案2】:

      尝试在您的视图中添加它,Load 方法是否按照我为摆脱它所做的操作

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

      这对我有用......你看到错误告诉你布局不应该为零,布局的框架是相对于它的超级视图设置的,布局在初始化期间传递给父类,检查你的 CollectionViewLayout 是“空”

      【讨论】:

      • 这不会改变任何东西。我的自定义单元格与集合视图布局有什么关系?
      • 我不想以编程方式进行布局,我想使用我在 xib 文件中使用界面生成器配置的布局。
      • 问题出在这里,if (self = [super initWithCollectionViewLayout:self.collectionViewLayout]) 确保self.collectionViewLayout不是nil
      猜你喜欢
      • 1970-01-01
      • 2017-05-02
      • 2015-05-23
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      相关资源
      最近更新 更多