【问题标题】:Uicollectionview cell not loading binary dataUicollectionview 单元格未加载二进制数据
【发布时间】:2019-07-25 01:21:28
【问题描述】:

我正在尝试在 uicollectionview imageview 单元格上加载核心数据二进制图像。当我转到集合视图控制器时,我在 theIssues.reloadData() 处收到错误消息“线程 1:致命错误:在隐式展开可选值时意外发现 nil”。如果我评论说屏幕只是黑色的。

class theCollection: UICollectionViewCell {


var backButton = UIButton()
@IBOutlet var dx : UIImageView!


}

class collectionVIEW: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource{

var users = [Item]()
@IBOutlet var theIssues: UICollectionView!

override func viewDidLoad() {
    super.viewDidLoad()

    users = AppDelegate.cdHandler.fetchObject()


    theIssues.reloadData()
}


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return users.count
}

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

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


    if let imageData = users[indexPath.row].image {

        let coredataLoadedimage = UIImage(data: imageData)
        cell.dx.image = coredataLoadedimage
        //
    }

    return cell
}
}

我想要的只是获取二进制数据并显示在集合视图单元格图像视图上。

【问题讨论】:

  • 添加异常断点,检查你的collectionView当时是否存在,检查你的cell是否正确出列
  • 我添加了加载类时发生的情况的图片,希望对您有所帮助。 @AlexandrKolesnik
  • 检查您的插座,似乎设置不正确
  • 这就是有人告诉我的“因为你没有在任何地方的代码中设置它,并且它具有@IBOutlet 属性,它需要连接到你故事板上的 UICollectionView。”。我不知道那是什么意思。我通过拖放连接了按钮。我不知道我还能做什么。
  • @GustavoConde 我在上面的评论中添加了更多信息。

标签: swift uicollectionview uicollectionviewcell binary-data


【解决方案1】:

在使用之前,您必须将CollectionCell 注册到collectionview。如果您因为应用崩溃而没有注册。

【讨论】:

  • 我该怎么做?我是把它放在视图控制器还是 collcectionviewcell 类中?
  • 我添加了 theIssues.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell") 来查看确实加载并且同样的问题不断发生。当我继续使用此视图控制器时,会出现错误,但是如果我将集合视图加载为初始视图控制器,则它可以工作。
  • @AlexandrKolesnik 这是我的项目的链接dropbox.com/s/peury7cgmbs24t8/NOTEBOOK.zip?dl=0
  • you moveRight func 工作错误,您正在创建新对象并尝试呈现它,您必须从情节提要中实例化 vc 替换为 @objc func moveRight() { let vc = UIStoryboard(name: "Main ", bundle: nil).instantiateViewController(withIdentifier: "collection") self.present(vc, animated: true) },别忘了给你的collectionViewController添加标识符