8

そのため、メッセージ拡張ステッカー パックではストーリーボードを使用しないことにしました。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 ワークフローをプログラムで再作成するにはどうすればよいですか?

4

1 に答える 1