UICollectionView visibleCells返回nil

时间:2015-04-24 08:38:26

标签: objective-c uicollectionview

虽然显示UICollectionViewCell,但[collectionView visibleCells]返回nil。

- (void)viewDidLoad{
    self.collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, 320, 568) collectionViewLayout:flowLayout];
    self.collectionView.delegate = self;
    self.collectionView.dataSource = self;
    [self.collectionView registerClass:[CustomCell class] forCellWithReuseIdentifier:@"Cell"];
    [self.view addSubview:self.collectionView];

    NSLog(@"%d", [[self.collectionView visibleCells] count]);
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CustomCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
    return cell;
}

你有什么想法吗?

3 个答案:

答案 0 :(得分:3)

问题是由重装尚未完成引起的。 解决方案是: 1. [collectionView reloadData]; 2. ** [collectionView layoutIfNeeded]; 3.得到你的 - > [collectionView visibleCells];

答案 1 :(得分:0)

在视图控制器中尝试此操作

- (void) viewDidLayoutSubviews {
   NSLog(@"%d", [[self.collectionView visibleCells] count]);
}

答案 2 :(得分:0)

尝试添加此内容:

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    collectionView?.collectionViewLayout.invalidateLayout()
}