【问题标题】:Error "not coding-compliant" for XIB VC IBOutlet'sXIB VC IBOutlet 的错误“不符合编码要求”
【发布时间】:2018-03-21 10:14:52
【问题描述】:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x101664480> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.'

当我像这样连接 IBOutlet 时为什么会出现此错误;
@IBOutlet weak var label: UILabel!

func viewDidLoad() { super.viewDidLoad() label.text = "Hello World!" }

xib 文件的所有者设置为自定义 UIViewController 类

UIViewController + xib 有什么特别之处吗?

Connected IBOutlet

忽略import NightNight

Outlets

通过UITableView中的这个函数加载VC;

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let topicVCName = UIViewController(nibName: categories[indexPath.section].refName[indexPath.row], bundle: nil) navigationController?.pushViewController(topicVCName, animated: true) } 如果我拿走插座,xib 加载正常,没有错误。 (显然)

【问题讨论】:

  • 你已经破坏了标签参考网点,在xib中查看
  • 请使用inspector再检查
  • 添加店铺图片
  • 按⇧⌘F,输入label,回车,查看搜索结果并修复问题。
  • 这将我指向文件所有者的出口

标签: ios swift xcode xib


【解决方案1】:

答案就在错误信息中:

UIViewController 0x101664480

这证明了故事板中的视图控制器(或者视图控制器本身来自哪里)是一个普通的 UIViewController 而不是 SingleNumberVC。 SingleNumberVC确实有label属性,但是UIViewController没有!

你说过:

xib 的文件所有者设置为自定义 UIViewController 类

确实如此,否则你根本无法形成出口。但是当代码运行时,视图控制器本身并不是自定义的 UIViewController 类。您没有回答它来自哪里的问题,但我向您保证,无论在哪里,您都会发现您忘记指定 SingleNumberVC。

编辑哦,我明白了,这里是:

let topicVCName = UIViewController(nibName: categories[indexPath.section].refName[indexPath.row], bundle: nil)

在该行中将 UIViewController 更改为 SingleNumberVC

【讨论】:

  • 有道理!那么在didSelectRowAt 中,常量“topicVCName”是否应该不是 UIViewController(....) 而应该是 SingleNumberVC(....)? @马特
  • 这也是有道理的。但这只会pushViewController SingleNumberVC,而且我有更多的VC,而不仅仅是SingleNumberVC...你会怎么做?
  • 我不知道你在说什么。我回答了你提出的问题。我(正确地)告诉了你崩溃意味着什么以及如何让崩溃消失。
猜你喜欢
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 2016-05-08
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多