Tak, zdecydowałem się nie używać storyboardów w moim pakiecie naklejki rozszerzenie wiadomości. Aplikacja iMessage zawiera plik scenorysu i MessagesViewController.swift. Stworzyłem 2 pliki o nazwie CollectionViewController i StickerCell. Pomysł polega na podklasie CollectionViewCell i przesłaniu jej jako MSStickerView i usunięciu tego widoku do mojego CollectionView jako "komórki".Tworzenie pliku naklejki programowo, problem z odlewania UICollectionViewCell jako MSStickerView
Oto kod do utworzenia „StickerCell” jako 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
}
a kod w mojej klasie StickerCell:
class StickerCell: UICollectionViewCell {
var stickerView: MSStickerView!
}
Zgaduję problem jest tutaj jak ja zrobiliśmy to z powodzeniem przy użyciu storyboardu i dokładnego kodu w StickerClass, z wyjątkiem var był IBOutlet. Tak więc wyraźnie coś nie łączy się z kolekcją CollectionView lub brakowało mi kroku. W programie Interface Builder utworzyłbym CollectionViewController, nadałem mu CollectionView, nadałem mu CollectionViewCell, a następnie uderzyłem UIView na górę i zmieniłem jego klasę na MSStickerView.
Programowalnie odtworzyć przepływ pracy modułu Interface Builder !?
Ohhhhh całkowicie. Uważam za oczywiste, co IB robi dla mnie. Dlatego zmuszam się do robienia rzeczy programowo. Dam ci coś takiego. –