错误"不符合编码"对于XIB VC IBOutlet&#39

时间:2018-03-21 10:14:52

标签: ios swift xcode xib

*** 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

VC通过UITableView中的此函数加载;

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可以正常加载,没有错误。 (显然)

1 个答案:

答案 0 :(得分:0)

答案在于错误消息:

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