【问题标题】:UICollectionView not displayed iOS8UICollectionView不显示iOS8
【发布时间】:2014-12-27 08:00:55
【问题描述】:

我是 iOS 编程新手。我试图创建使用 UICollectionView 来显示图像网格。我按照本教程:http://www.youtube.com/watch?v=ijAzOIRhhzA 并执行了以下步骤:

  1. 将 Xcode 中的 UICollectionView 放入我的视图中
  2. 类未设置为任何内容
  3. 在我的视图控制器中为此 UICollectionView 创建了一个 outlet 属性,并将视图控制器声明为 UICollection 视图的数据源和委托,如下所示: @interface appViewController : ViewController < UICollectionViewDelegate,UICollectionViewDataSource> @end
  4. 设置布局属性为“流”,滚动方向为水平
  5. 创建了一个xib(视图)删除了默认视图并放置了一个UICollectionViewCell并用一个UIImage填充它(将UICollectionViewCell的标识符设置为“appCell”
  6. 创建了一个类(继承 UICollectionViewCell)并为 UIImage 创建了一个出口
  7. 类、XIB 都同名 - appNameCellCollectionViewCell (.h, .m, .xib)
  8. 在 viewController 的 viewDidLoad 中放入以下代码: [self.outletUICollectionView registerNib:[UINib nibWithNibName:@"appCellCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"appCell"];
  9. 在viewController中实现了numberOfItemsInSection、numberOfSectionsInCollectionView、cellForItemAtIndexPath,如下: -(appCellCollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ appCellCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"appCell" forIndexPath:indexPath]; cell.appCellImage.image = [设置图像]; 返回单元格; }

我知道我应该在视图控制器中将数据源和出口的委托设置为 self,但我不确定在哪里设置。我尝试在视图中执行此操作,在步骤 8 代码的上方和下方加载,但没有差异。我得到一个黑色区域而不是 UICollectionView。

我检查了 UIImage 是否存在以及所有内容。我想我错过了什么请帮助我!

谢谢

【问题讨论】:

    标签: ios8 uicollectionview


    【解决方案1】:

    黑色区域可能是由于故事板和您的代码之间没有连接的东西。

    如果您无法从情节提要中弄清楚,请尝试在您的代码中设置断点,并检查出口是否为 nil。

    您可以在代码中设置委托和数据源,但通过情节提要设置所有内容要干净得多。打开情节提要的视图控制器,使用 ⌥⌘6 打开连接检查器,然后从连接中按住 control 拖动到情节提要中的视图控制器(或控件)。

    除非您有特定原因,否则您可能会发现使用UICollectionViewController 比使用UIViewController 更容易。它将为您处理很多事情,并使您的代码更简单。

    更新:

    您正在尝试使用其他人的代码,同时又是 iOS 新手。仅查看您与我共享的代码,我可以看到对象没有正确命名,并且您正在犯错误,例如尝试将一种类型的对象分配给另一种类型。

    您现在可能无法同时处理键盘扩展、云、第三方框架和 nib,而 这并不能帮助您了解视图、视图等基础知识控制器,使用 Xcode,以及如何连接插座

    • 我真的建议您退后一步,看看 Apple 的 Getting Started roadmap。这将帮助您学习 Xcode,如何 使用故事板,以及如何连接出口和代表。

    • 在您完成 Apple 的教程后,想要开始您的 应用程序的想法,尝试只关注一个特定的方面。寻找一个 UICollectionViewController 使用集合视图的教程和 故事板中的集合视图单元格。 raywenderlich.com有 很多很棒的教程。了解如何加载本地图像 那个项目。忽略笔尖、键盘扩展、从 云等。

    • 一旦您了解了这些基础知识,就可以着手移动 UICollectionViewCell 到一个笔尖,得到你的故事板 UICollectionViewUICollectionViewController 使用笔尖。

    学习和构建基础知识将使您了解如何将图像从云端加载到您的收藏视图中。

    您现在在 cmets 中寻求帮助的原因是视图控制器无法使单元格出列的原因。这是因为代码没有正确连接。这就是我建议学习基础知识的原因,这样您就知道如何调试这样的基础知识,了解崩溃的原因以及如何修复它。

    学习和开发适用于 iOS 的应用程序很有趣,但我认为,如果您在尝试处理涉及键盘扩展和第三方框架的更复杂的项目之前先掌握基础知识,您将不会那么沮丧。

    【讨论】:

    • 嗨佩塔,谢谢。我还尝试使用故事板来连接数据源和委托。那也没有用。 :( 我设置了断点,我可以看到控件运行并执行所有语句。我看到集合视图本身已连接。数据源和委托也是。集合视图单元已连接到它的提到了自己的课程。如果我发布我的源代码会有所帮助。让我试试。同时我可能会丢失其他任何东西。我也会再检查一次。
    • 嗨佩塔,drive.google.com/…。你能看一下吗。基本上我有一个 iOS 8 键盘扩展,我试图在其中显示集合视图。包含云代码的嵌入式框架。
    • 在我连接数据源和委托后,我没有得到黑色区域。我尝试调试和检查。控制似乎来到了 cellForItemAtIndexPath: 方法并且永远不会到达第二行。执行 dequeueReusableCellWithReuseIdentifier 方法时,控件似乎终止了 :(.. 请帮助!!
    • 好的,让我从一个简单的集合视图应用程序开始,然后逐步进行。但是我能够看到其余的代码工作正常。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多