如何将collectionview作为子视图添加到viewcontroller

Posted

技术标签:

【中文标题】如何将collectionview作为子视图添加到viewcontroller【英文标题】:How to add collectionview as subview to viewcontroller 【发布时间】:2014-05-21 17:23:19 【问题描述】:

当我想将它作为子视图添加到我的 ProfileViewController 时,我的 collectionview 出现了一点问题。当我想重新加载collectionview时出现问题,xcode给我一个错误property 'collectionview' not found on type of ProfileViewController。 我该如何克服这个问题?我要创建一个新的 collectionview 类文件并将其设置为 ProfileViewController 上的 collectionview 吗?下面是我的故事板的图像。

故事板的图片位于此链接。 http://i.stack.imgur.com/XSE29.png 。 由于我的声誉很低,我无法在此帖子中附加图片。

【问题讨论】:

那么视图是否最初加载并且仅在您尝试重新加载集合视图时才给出错误?还是在加载包含集合视图的视图时立即发生崩溃。您遇到的错误通常是由不再存在的对象上设置的插座引起的(插座已在 IB 中连接,然后在代码中删除)。 您必须将情节提要中的视图连接到代码中的 IBOutlet。 Xcode 不会为您这样做,Xcode 仅在您将 CollectionViewController 添加到情节提要时才会这样做。如果您调用该 IBOutlet collectionView 您的代码应该可以工作。 【参考方案1】:

您需要确保您的 ProfileViewController 符合 UICollectionViewDataSource 和 UICollectionViewDelegate 协议,并且当您在 ProfileViewController 中创建集合视图时,请确保您这样做:

collectionView.delegate = self;
collectionView.dataSource = self;

听起来您正在尝试使用 self.collectionView,而 ProfileViewController 上不存在该属性。

【讨论】:

我已经把 放在了我的 ProfileViewController 上。而且我还尝试将 collectionView.delegate = self;和 collectionView.dataSource = self;在我的 ProfileViewController 但我的 xcode 给了我一个错误。下面是 .h 和 .m 文件的图像。 .h 文件i.imgur.com/RWvQhLT.png .m 文件i.imgur.com/T2jgkDm.png 你在哪里创建集合视图?如果不在视图控制器上添加 collectionView 属性,则无法引用 self.collectionView。 创建collectionview是什么意思?我只是使用情节提要拖出collectionview并将其放入我的ProfileViewController中。这是我的 .h 和 .m 代码 .h 文件 pastebin.com/yNMVpBV9 .m 文件 pastebin.com/YG3JCaGu 您使用界面构建器拖动集合视图,但要从代码中访问它,您需要在代码中创建一个 IBOutlet 属性,该属性附加到 nib 中的集合视图。否则,系统将不知道 nib 中的集合视图与您在代码中引用的集合视图相同。 谢谢大家。我终于通过为集合视图创建一个新的 IBOutlet 连接并自己的集合视图委托和集合视图数据源来解决我的问题。

以上是关于如何将collectionview作为子视图添加到viewcontroller的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UITableView 作为子视图添加到 xib 中的 UIView?

如何将 UIViewController 作为子视图添加到 UIViewController(RootViewController)?

关于如何将 UIview 作为子视图添加到 UITableCell 的问题

如何从同一方法外部将按钮添加到 UIScrollView 作为子视图?

将视图添加到 StoryBoard 中的 CollectionView 标题

如何在 Swift 中复制/复制自定义 collectionview 单元格?