IBOutlet все еще равен нулю после попытки найти каждое найденное предложение - PullRequest
0 голосов
/ 29 апреля 2020

Я прочитал «все» шаги здесь на 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, и он зарегистрирован по идентификатору раскадровки
  • Розетки подключаются путем перетаскивания из меток в код, а не в владельца файла

Storyboard XIB XIB 2 XIB 3

Есть какие-нибудь подсказки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...