UICollectionView 不显示

Posted

技术标签:

【中文标题】UICollectionView 不显示【英文标题】:UICollectionView doesn't show 【发布时间】:2017-08-07 23:49:35 【问题描述】:

我的一个 ViewController 中有一个 UICollectionView,但它根本不显示。我不知道为什么会这样。我已经为我拥有的两种不同类型的单元格以及 CollectionView 的所有其他代码编写了代码,但它不起作用。

如果你们需要任何类型的信息,我很乐意提供给你们,但我不会马上做,因为有很多地方可能会出现问题,所以我不会将立即发布所有内容。希望你能理解。

仅供参考:我的代码是用 swift 3 编写的,您知道,我已经尝试清理我的项目并将 CollectionView 与代码断开连接,然后重新连接。

非常感谢

我真的需要你的帮助,因为我不知道为什么会这样。

好吧,代码如下:

class AddPersonViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UICollectionViewDelegate, UICollectionViewDataSource, APCodeCollectionCellDelegate 

然后有一些东西介于两者之间,还有网点

这里我设置了数据源和委托

collectionView.delegate = self
collectionView.dataSource = self

这里我做了一些自定义

collectionView.layer.borderColor = UIColor(red: 2/255, green: 11/255, blue: 57/255, alpha: 1.0).cgColor
    collectionView.layer.borderWidth = 2
    collectionView.layer.cornerRadius = 15 
    collectionView.clipsToBounds = true

最后是数据源的所有代码

//Collection View Cells

func numberOfSections(in collectionView: UICollectionView) -> Int 
    return 1


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    return person.codes.count + 1


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

    if indexPath.row < self.person.codes.count 

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CodeCell", for: indexPath) as! APCodeCollectionViewCell

        cell.codeTextView.text = person.codes[indexPath.row].code
        cell.nameLabel.text = person.codes[indexPath.row].title
        cell.isFavorite = person.codes[indexPath.row].favorite

        cell.codeTextView.layer.cornerRadius = 15

        cell.layer.cornerRadius = 4

        cell.backgroundColor = UIColor.white

        cell.delegate = self

        return cell

     else 

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AddCell", for: indexPath) as! APAddCodeCollectionViewCell

        cell.layer.cornerRadius = 4

        cell.backgroundColor = UIColor.white

        return cell
    

我真的希望这会有所帮助,否则我会重新做一遍......

【问题讨论】:

你设置了collectionview的delegate和datasource了吗?? 检查数据源和委托是否提供,其次查看用于集合视图的数组不能为 nil 需要看码友:D 我已经添加了代码 【参考方案1】:

您是否已将您的委托和数据源从集合视图连接到视图控制器输入 image

【讨论】:

【参考方案2】:

首先检查你的委托和数据源是否连接,如果没有,则设置委托和数据源:-

 class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource  
 override func viewDidLoad() 
    super.viewDidLoad()
    collectionView.delegate = self
    collectionView.dataSource = self 
 

在 swift 3 中,不导入 UICollectionViewDelegate 和 UICollectionViewDataSource 会出现一些问题。 如果您不导入这些文件,请检查委托方法或在委托方法中使用这些名称 cellForItemAtIndexPath, numberOfItemsInSection

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 

 func collectionView(_ collectionView: UICollectionView, cellForItemAtIndexPath indexPath: IndexPath) -> UICollectionViewCell 

【讨论】:

【参考方案3】:

按 ctrl 并将 uiimageView 拖到控制器内部 用你的标签和你的控制器内部做同样的事情 做你的员工。

【讨论】:

图像视图的cntrl+拖动如何显示集合视图? 与您使用表格视图或其他收集器类型实现委托的方式相同,您应该创建一个自定义类并使用此自定义 uicollectionview 中的引用

以上是关于UICollectionView 不显示的主要内容,如果未能解决你的问题,请参考以下文章

为啥 UICollectionView 的委托方法不起作用?

UITableViewCell内的iOS UICollectionView

制作 iOS Gallery - UICollectionView 可重用性

iOS UICollectionView简单使用

UICollectionView 比 NavigationController 大

UICollectionView cellForRow 崩溃