5

我最近在我的故事板中添加了一个 UICollectionView,它当前被另一个视图推入视图,这似乎工作正常但是,使用故事板编辑器我将视图设置为包含 35 个在编辑器中看起来很好的单元格,但是当我运行应用单元格是不可见的。一些单元格内部有 UIButtons,这些也不会呈现。

为了仔细检查视图是否正在渲染,我在编辑器中更改了背景颜色并再次运行它,颜色更新正确。我是否正确假设设置应该自动呈现单元格,如果它们已在编辑器中设置,我不必运行任何委托代码?

任何帮助,将不胜感激。

谢谢

编辑 - -

好的,我已经在我的第二个视图控制器中实现了适当的委托方法,然后推送一个 segue 以调出 collectionview 控制器,我还添加到我的第二个视图控制器头文件中,并将以下代码添加到 .M 文件中:

// number of sections for the view
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
    return 1;
}

// numbers of items in section
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return 1;
}

// cell to return (uses the custom identifier of the cell in the storyboard)
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"quickNoteCell" forIndexPath:indexPath];
    return cell;
}

我还确保故事板上单元格中的标识符使用 quickNoteCell,并将其默认颜色更改为蓝色,但是我仍然没有看到单元格有任何想法?

4

4 回答 4

11

您没有看到任何单元格,因为您生成了一个 UICollectionViewController 子类,该子类在viewDidLoad:. 据我了解,这会产生空白单元格,在使用自动布局时会压缩到 0,0 大小。

删除此行以查看您在情节提要中定义的单元格,而不是不可见的 UICollectionViewCells

 // Register cell classes
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
于 2015-04-08T14:20:06.973 回答
1

就像杰伊说的那样,把这条线放在你的@interface 下,它应该可以工作。您发布的代码没有任何问题。

<UICollectionViewDelegate, UICollectionViewDataSource>
于 2012-11-16T03:56:16.760 回答
0

你实现了 UICollectionViewDelegate 和 UICollectionViewDataSource 协议了吗?

collectionView:cellForItemAtIndexPath: 是否被调用?

于 2012-11-06T21:31:09.123 回答
0

如果您正在使用自定义 collectionViewItems 并且您想将数据从 nib 文件寄存器的第一个 nib 加载到 collectionView:

let nib = UINib(nibName: reuseIdentifier, bundle: Bundle.main);
self.collectionView?.register(nib, forCellWithReuseIdentifier: reuseIdentifier);

并在集合视图委托中调用:

collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath)
于 2016-10-30T09:04:56.980 回答