1

基本上我已经写了大约 3 天的 iOS 应用程序(在阅读了一本书以了解设计模式和框架等的基本知识之后),并且花了一整天的时间。我无法CollectionView显示。我有一个以 a 开头的情节提要,TabBarView两个选项卡(一个是 a TableView,另一个只是 a UIView)工作,但第三个选项卡(UICollectionView)即使在设置后也只是显示黑屏。我是如何设置的:

1) 将 ViewController 拖到情节提要

2)segue在我UITabBarController和新之间建立了关系ViewController

3)拖到UICollectionView新的ViewController

4) 将 4UICollectionViewCell's拖到CollectionView

5)将4UILabels拖入说CollectionViewCell's

6)在新的CollectionView's委托和数据源与我的CollectionView班级的头文件之间建立了连接(这可能是我出错的地方,我没有与我的ViewController.h班级建立联系,因为我为我的班级使用了这个UITableView并认为一个新班级是必要的)

CollectionView.m7)在我的文件中声明了以下方法

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
//Populates each cell using the data given (no data in this case).
//Should return a CollectionViewCell.
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];

return cell;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    //Gets the number of cells in each section.
    //Should return an integer value.
    return 2;
}

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    //Tells the collection view the number of sections it should have.
    //Should return an integer value.
    return 4;
}

我觉得我错过了一些东西,因为这个逻辑对我作为一名程序员来说是有意义的,但是,在 Xcode 方面的经验如此之少,也许我忘了把这个类与我的CollectionView或其他东西联系起来。有人知道我哪里出错了吗?

顺便说一句,如果您想知道,我使用此 CollectionView 更多的是一种导航技术,而不是显示精彩的图像或任何东西,稍后当它们实际出现在模拟器中时,我将使用通用图像填充它们。谢谢

4

4 回答 4

3

它不显示任何内容,因为标签的默认颜色为黑色,您必须将文本颜色更改为任何浅色才能看到单元格上的文本。

Now, 

-> 添加一个新文件,它应该是UICollectionViewCell的子类,Ctrl+从标签拖动到此类。(例如,我使用了 mainViewCell)和标签属性名称我使用了labelText

->从属性检查器声明单元的reuseIdentifier,(mainCell,我拿了)

-> 将 cellClass 导入你的UIViewController类,

-> 使用此方法显示任何文本

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    mainViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"mainCell" forIndexPath:indexPath];
    cell.labelText.text = @"What-ever-you-want-display";
    return cell;
}

希望这会有所帮助...

于 2013-10-22T10:30:21.550 回答
0

您是否告诉您的视图控制器(包含集合视图的控制器)使用 UICollectionViewDelegateFlowLayout?例如,

@interface RootViewController () <UICollectionViewDelegateFlowLayout, UICollectionViewDataSource>

另外,您是否为您的单元设置了重用标识符?在 Interface Builder 中,在属性检查器中设置此项。然后转到 cellForItemAtIndexPath: 方法并更改此行以使用您的标识符。UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];

查看文档中的 UICollectionViewDelegateFlowLayout 以了解用于调整单元格大小以及设置边距和间距的方法。

于 2013-06-24T15:34:58.193 回答
0

步骤 6) 可能不够。您是否直接将 collectionView 拖到主视图下方的控制器图标上?将在一个黑色对话框中提示您连接数据源和委托。通过这种方式在 XCode 中建立连接。或者,您可以在控制器实现中将 dataSource 显式设置为 self 。

于 2013-10-07T17:18:01.400 回答
0

从默认视图控制器代码片段中删除 registerClass 代码

[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
于 2016-01-08T12:00:30.820 回答