NativeAd 的 IB Outlet 在 tableview 单元格中为零

Posted

技术标签:

【中文标题】NativeAd 的 IB Outlet 在 tableview 单元格中为零【英文标题】:IB Outlet for NativeAd is nil in a tableview cell 【发布时间】:2021-02-22 02:37:57 【问题描述】:
  let nativeAdCell = tableView.dequeueReusableCell(
      withIdentifier: "Ads", for: indexPath) as! NativeAds

然后

 (nativeAdCell.HeadlineView).text = nativeAd.headline
        (nativeAdCell.PriceView).text = nativeAd.price
        

运行时,出现错误,说明线程 1:致命错误:在展开 Optional 值时意外发现 nil。这意味着视图为零

编辑 1

   tableview.register(NativeAds.self, forCellReuseIdentifier: "Ads")


   let nativeAdCell = tableView.dequeueReusableCell(
       withIdentifier: "Ads", for: indexPath) as! NativeAds

我是怎么注册的,我用的是 Xib 文件

【问题讨论】:

你是如何注册你的单元类的?你在用故事板吗?你设置好插座了吗?表格视图是否来自那个故事板?为什么要强制将属性向下转换为UILabel?该属性应该已经具有正确的类型。如果它有不同的类型,那么强制向下转换也可能导致崩溃。 对其进行了编辑并感谢信息 你必须register the NIB 而不是班级。如果您从类中实例化,则未设置出口。 【参考方案1】:

按照下面的代码在表格视图中注册XIB文件:

tableView.register(UINib(nibName: "yourNibFileName", bundle: nil), forCellReuseIdentifier: "yourIdentier")

【讨论】:

它说“[ setValue:forUndefinedKey:]: 这个类不符合键视图的键值编码。” 可能是插座坏了。检查您班级中的插座连接以及 XIB 文件连接检查器。 修复了问题,请大家帮忙

以上是关于NativeAd 的 IB Outlet 在 tableview 单元格中为零的主要内容,如果未能解决你的问题,请参考以下文章

IB Tap Gesture Recognizer 总是从 Outlet Collection 返回第一个视图

向视图控制器添加初始化程序会导致 viewDidLoad 中的 outlet 为 nil

Angular 之 named outlet

ng2中router-outlet用法

如何动态使用angularjs ng-outlet

理解顶层 <router-outlet> 和子模块 <router-outlet>