So, I have opted to using no storyboards in my messages extension sticker pack. The iMessage app comes with a storyboard file and a MessagesViewController.swift. I created 2 files named CollectionViewController and StickerCell. The idea is to subclass CollectionViewCell and cast it as MSStickerView and dequeue that view into my CollectionView as a "cell".
Here is the code for setting up the "StickerCell" as 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
}
and the code in my StickerCell class:
class StickerCell: UICollectionViewCell {
var stickerView: MSStickerView!
}
I'm guessing the issue is here as I have done this successfully with storyboard and the exact code in StickerClass, except the var was an IBOutlet. So clearly something is not connecting to the CollectionView or I missed a step. In Interface Builder, I would create the CollectionViewController, give it a CollectionView, give it a CollectionViewCell, then slap a UIView on top and change it's class to MSStickerView.
How do I recreate the Interface Builder workflow programmatically!?