我试图创建一个可以从多个视图控制器调用的自定义弹出视图,但是我遇到了一些麻烦。
只要我在viewController本身中编写并调用“presentPopup”方法,就能够使其正常工作。与其在每个VC中编写一个单独的方法,不如在一个单独的类中编写一个方法并仅传递参数以对其进行个性化设置。
无论如何,每当我尝试这样做时,我都会不断收到著名的“此类不符合键的键值编码”错误。只是想知道是否有人对如何使类键值编码符合标准有任何见解?还是一般来说怎么做?谢谢!!
最佳答案
该答案的末尾有一个简单的解释,但是最近我看到了一些类似的问题,因此我想提供一些背景知识。
该错误还应告诉您该类不符合其键值编码的键。问题的措辞表明您认为可以添加一些通用的代码来使类“符合键值编码”。事实并非如此。
所有可可/可可接触物体都能够执行键值编码操作。 KVC允许您通过使用valueForKey:
或setValue:forKey:
而不是直接使用访问器方法来访问访问器方法。
您看到的错误将与以下内容相似:
XXX-此类不符合键YYY的键值编码。
XXX是相关 class ,YYY是关键。因此在某处,[xxx setValue:something forKey:@"YYY"]
被调用。
此时,您正在考虑“但是我从未在代码中使用setValue:forKey
!”。你可能是对的。但是,当您加载xib文件时,框架会使用它-所有插座均使用键值编码进行设置。
因此,您的xib中将有一个插座,该插座已连接到某个东西,此插座在链接到的类中已被移除或重命名。如果幸运的话,它旁边还会有一个感叹号。如果不是,您甚至不会在界面生成器中看到它,并且必须将xib编辑为源代码并将其从XML中删除。
关于ios - 显示UIView子类-此类不符合 key 的键值编码要求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11166470/