所以,我选择在我的消息扩展贴纸包中不使用故事板。iMessage 应用程序带有一个故事板文件和一个 MessagesViewController.swift。我创建了 2 个名为 CollectionViewController 和 StickerCell 的文件。这个想法是将 CollectionViewCell 子类化并将其转换为 MSStickerView 并将该视图作为“单元格”出列到我的 CollectionView 中。
以下是将“StickerCell”设置为 MSSstickerView 的代码:
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let item = data[indexPath.row]
return deQStickerCell(for: item, at: indexPath)
}
private func deQStickerCell(for sticker: MSSticker, at indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView?.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! StickerCell
cell.stickerView.sticker = sticker
return cell
}
以及我的 StickerCell 类中的代码:
class StickerCell: UICollectionViewCell {
var stickerView: MSStickerView!
}
我猜问题出在这里,因为我已经使用故事板和 StickerClass 中的确切代码成功完成了此操作,除了 var 是一个 IBOutlet。很明显,有些东西没有连接到 CollectionView,或者我错过了一步。在 Interface Builder 中,我将创建 CollectionViewController,给它一个 CollectionView,给它一个 CollectionViewCell,然后在顶部添加一个 UIView 并将它的类更改为 MSStickerView。
如何以编程方式重新创建 Interface Builder 工作流程!?