У меня есть UICollectionViewCell, вытянутый в xib и сопровождаемый быстрым файлом класса. Эти два файла являются частью целевой платформы пользовательского интерфейса моего приложения (называемой SomeUI).
В контроллере представления моего представления коллекции (в цели приложения) я регистрирую перо как ячейку представления коллекции. Мой код контроллера представления выглядит следующим образом:
import UIKit
import SomeUI
let reuseIdentifier = "Cell"
class ACollectionViewController: UICollectionViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView.registerNib(UINib(nibName: "JamesTheCollectionViewCell", bundle: NSBundle(identifier: "SomeUI")), forCellWithReuseIdentifier: reuseIdentifier)
}
override func numberOfSectionsInCollectionView(collectionView: UICollectionView!) -> Int {
return 1
}
override func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int {
return 1
}
override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as JamesTheCollectionViewCell
cell.titleLabel.text = "yippee"
return cell
}
}
В наконечнике представление ячейки имеет свой пользовательский класс, установленный соответствующим образом; JamesTheCollectionViewCell в модуле SomeUI.
Хотя Xcode кажется вполне довольным этой настройкой, во время выполнения я получаю сообщение об ошибке, поскольку класс, определенный в JamesTheCollectionView.swift, не может быть найден.
Неизвестный класс _TtC19collectionViewThing26JamesTheCollectionViewCell в файле построителя интерфейсов.
Если я переключу целевое членство для JamesTheCollectionView.swift с фреймворка на приложение (но оставлю xib как часть фреймворка), все будет работать нормально. Но я попросил файл xib загрузить класс из фреймворка… что я упустил, почему он не работает, когда класс реализации ячейки является частью фреймворка?
Для справки, вот файл реализации ячейки:
import UIKit
public class JamesTheCollectionViewCell: UICollectionViewCell {
@IBOutlet public weak var titleLabel: UILabel!
}