【发布时间】:2020-04-29 10:47:04
【问题描述】:
我已经阅读了关于 SO 的“所有”步骤,但无法修复我在 TableViewCell.xib 中的 IBOutlets 仍然为 nil 并且永远不会调用 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 类(在第一次出现错误之后)
- 在 CartViewController 的
viewWillAppear中添加了_ = self.view - 尝试向其他 XIB 添加新标签以检查是否发生错误 - 它确实不
- 在 XIB 中,验证:
- 插座已连接(多次这样做)
- 自定义 class= CartProductCell
- 文件的所有者 = CartProductCell
- 重用标识符 = CartProductCell
- 在 Storyboard 中,验证:
- 单元格 class= CartProductCell
- 重用标识符 = CartProductCell
我的手机:
class CartProductCell: UITableViewCell {
@IBOutlet weak var productTitle: UILabel!
override func awakeFromNib() {
print("awaken")
}
var item: orderItem? {
didSet {
productTitle.text = item?.product.description
}
}
}
出队:
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)
}
}
}
}
更新
- XIB 用于 UTTableViewCell,它是通过故事板标识符注册的
- 插座是通过从标签拖动到代码来连接的,而不是在文件的所有者中
有什么线索吗?
【问题讨论】:
-
当您说出口在xib中连接时,您的意思是它们已连接到
File's Owner?如果是这样,我很确定这不是为 tableviewcell 做的方法。相反,右键单击 xib 中的实际单元实例并将它们连接到那里。如果没有看到您的 xib 内容,很难确定。 -
你是如何注册小区的?
-
您使用XIB作为Cell的权利,您是否将CartProductCell注册到TableView?
-
用答案和一些截图更新了问题。感谢您的努力!
-
您使用的不是来自 xib 的单元格的界面版本,而是来自情节提要。因此它没有出口链接。