iOS12 UICollectionView willDisplay在所有单元格上调用的单元格

时间:2018-10-22 17:52:50

标签: ios swift uicollectionview uikeyboard

UICollectionView的{​​{1}}组成的我的键盘扩展在超过53MB的RAM后仍然在iOS12上崩溃。

UIImages在所有单元格上都被调用,无论是否显示

注意:collectionView:willDisplay cell从未被呼叫

didEndDisplaying

我可以恢复func collectionView(_ collectionView: UICollectionView, willDisplay c: UICollectionViewCell, forItemAt indexPath: IndexPath) 的行为,以便仅在实际显示单元格时调用它吗?

collectionView:willDisplay

1 个答案:

答案 0 :(得分:0)

您可能正在调用reloadData()或tableview数据源方法中的某些内容,从而导致无限循环。 setupWithEmojiImage(image: nil)中的代码是什么?我认为您应该在cellForRow中放置以下内容,而不是willDisplay:

let imageName = String(format:"%@-%@", categories[selectedCategory], NSNumber(value: indexPath.row + 1));
let emojiImage = UIImage(named: imageName)
cell.setupWithEmojiImage(image: emojiImage)

也请避免使用bang运算符(!)强制展开,如果对象不存在,则会导致崩溃。这样做:

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

    if let cell: EmojiCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "EmojiCollectionViewCell", for: indexPath) as? EmojiCollectionViewCell {
        return cell
    }

    return UITableViewCell()
}