Я прочитал «все» шаги здесь на SO, и не могу исправить ошибку, когда мой IBOutlets в TableViewCell.xib все еще равен нулю и awakeFromNib () никогда не вызывается.
Ошибка
productTitle.text = item?.product.description
Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
//item?.product.description is not nil
Что я пробовал:
- Очистить папку сборки
- Удалить папку производных данных
- Создан новый Xib и. swift класс с нуля (после первой ошибки)
- Добавлено
_ = self.view
в CartViewController's viewWillAppear
- Попытка добавить новые метки в другой XIB, чтобы проверить, возникает ли ошибка - это происходит не
- В XIB проверено, что:
- Розетка подключена (это делается несколько раз)
- Пользовательский класс = CartProductCell
- Владелец файла = CartProductCell
- Повторно использовать идентификатор = CartProductCell
- В раскадровке проверено, что:
- Класс ячейки = CartProductCell
- Идентификатор повторного использования = CartProductCell
Моя ячейка:
class CartProductCell: UITableViewCell {
@IBOutlet weak var productTitle: UILabel!
override func awakeFromNib() {
print("awaken")
}
var item: orderItem? {
didSet {
productTitle.text = item?.product.description
}
}
}
Dequ eue'ing it:
class CartViewController: UITableViewController {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let item = sections[indexPath.section][indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "CartProductCell", for: indexPath ) as! CartProductCell
cell.item = item
return cell
}
}
Создание экземпляра ViewController
extension UIViewController {
@objc func viewCart() {
if Cart.sharedInstance.order.items.count == 0 {
if let cartVC = storyboard?.instantiateViewController(withIdentifier: "EmptyCart") {
let cartNavigationController = UINavigationController(rootViewController: cartVC)
self.present(cartNavigationController, animated: true)
}
} else {
if let cartVC = storyboard?.instantiateViewController(withIdentifier: "Cart") as? CartViewController {
let cartNavigationController = UINavigationController(rootViewController: cartVC)
self.present(cartNavigationController, animated: true)
}
}
}
}
UPDATE
- XIB для UTTableViewCell, и он зарегистрирован по идентификатору раскадровки
- Розетки подключаются путем перетаскивания из меток в код, а не в владельца файла
Есть какие-нибудь подсказки?