そのため、メッセージ拡張ステッカー パックではストーリーボードを使用しないことにしました。iMessage アプリには、ストーリーボード ファイルと MessagesViewController.swift が付属しています。CollectionViewController と StickerCell という名前の 2 つのファイルを作成しました。アイデアは、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!
}
変数がIBOutletであることを除いて、ストーリーボードとStickerClassの正確なコードでこれを成功させたので、問題はここにあると推測しています。明らかに、何かが CollectionView に接続していないか、ステップを逃しました。Interface Builder では、CollectionViewController を作成し、CollectionView を指定し、CollectionViewCell を指定してから、UIView を上に置き、そのクラスを MSStickerView に変更します。
Interface Builder ワークフローをプログラムで再作成するにはどうすればよいですか?