断言失败 - [UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:]

时间:2016-09-06 11:05:06

标签: ios swift

我正在创建一个表视图,在自定义的UItableviewCell中我正在使用集合视图,我还创建了一个自定义的集合视图单元格。在TableViewCell中设置集合视图的所有基本功能之后,当运行应用程序时,我得到了崩溃的原因:

  

由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'从-collectionView:cellForItemAtIndexPath返回的视图:({length = 2,path = 0 - 0})未被检索到调用-dequeueReusableCellWithReuseIdentifier:forIndexPath:或者是nil(>)'

我试图搜索更多内容,但无法找到任何方向

这是我的代码段: 1.在TableViewcell中唤醒来自Nib:

 override func awakeFromNib() {
    super.awakeFromNib()
    //  self.collectionView_Files.registerNib(UINib(nibName: "MediaCollectionCell", bundle: nil), forCellWithReuseIdentifier: "MediaCollectionCell")
   self.collectionView_Files.registerClass(MediaCollectionCell.self, forCellWithReuseIdentifier: "MediaCollectionCell")
}

CollectionView方法:

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

    return arrFolderData.count
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

     let simpleTableIdentifier = "MediaCollectionCell"




    var cell: MediaCollectionCell = collectionView.dequeueReusableCellWithReuseIdentifier(simpleTableIdentifier, forIndexPath: indexPath) as! MediaCollectionCell
    cell = NSBundle.mainBundle().loadNibNamed(simpleTableIdentifier, owner: self, options: nil)[0] as! (MediaCollectionCell)

    let dict = arrFolderData[indexPath.row]

    if(dict["file_type"] as! String == "0") { /// Means image
    cell.imgView_Item.image = UIImage(named: "images_41")
        cell.btn_ViewImage.hidden = false
        cell.btn_PlayVideo.hidden = true
    } else if (dict["file_type"] as! String == "1") { /// Means video
        cell.btn_ViewImage.hidden = true
        cell.btn_PlayVideo.hidden = false
        cell.imgView_Item.image = UIImage(named: "video_thumb_icon")
    }

    //   cell.backgroundColor = arrFolderData[indexPath.item]

    return cell
}

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    print("Collection view at row \(collectionView.tag) selected index path \(indexPath)")
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{


    let length = (UIScreen.mainScreen().bounds.width-15)/2
    return CGSizeMake(length,length);
}

1 个答案:

答案 0 :(得分:2)

正如帖子中提到的,我正在使用tablecell xib文件并尝试按照我的需要进行操作,但是一旦我改变了我的方法,我就将tableview单元创建到故事板内的UITableView并更新所有出口然后运行应用程序。该应用程序工作正常....集合视图单元格中的所有出口都是动态创建的,并参考了它们的静态变量。