接口构建器问题:连接 IBOutlet 时,获取“此类与键的键值编码不兼容”
Posted
技术标签:
【中文标题】接口构建器问题:连接 IBOutlet 时,获取“此类与键的键值编码不兼容”【英文标题】:Interface builder problem: When hooking up an IBOutlet, getting "this class is not key value coding-compliant for the key" 【发布时间】:2010-05-05 11:36:31 【问题描述】:这是我的工作:
1) 创建新的 UIViewController 子类,在界面生成器中勾选 NIB
2) 在标题中:
@interface QuizMainViewController : UIViewController
UILabel* aLabel;
@property (nonatomic, retain) IBOutlet UILabel* aLabel;
@end
3) 在.m中
#import "QuizMainViewController.h"
@implementation QuizMainViewController
@synthesize aLabel;
- (void)dealloc
[aLabel release];
[super dealloc];
@end
4) 打开NIB In interface builder,将一个新的UILabel拖到视图中。
我在这里测试了程序,它运行良好。
5) 右键单击文件的所有者,将“aLabel”从 Outlets 连接到 UILabel。
我在这里运行,它崩溃了。来自日志的消息:
*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合键 aLabel 的键值编码。”
【问题讨论】:
我登录只是为了将它加一并说“谢谢!” 【参考方案1】:我已经解决了这个问题!
视图是从标签栏控制器加载的,我已将 nib 名称设置为“QuizMainViewController”,但我没有将视图的类标识设置为“QuizMainViewController”,它停留在默认值“UIViewController”。
当视图被加载时,它认为它是 UIViewController 的一个实例,因此它不知道 aLabel 属性。
故事的寓意:使用标签栏控制器时,为拥有自己的视图控制器的 nib 设置 nib 名称和类标识。
【讨论】:
【参考方案2】:试试:
@interface QuizMainViewController : UIViewController
IBOutlet UILabel* aLabel;
据说,您不再需要在 Objective-C 2.0 中执行此操作,但我在 iPhone 上遇到了问题,将其排除在外。
编辑:
你可以尝试改变
@property (nonatomic, retain) IBOutlet UILabel* aLabel;
到
@property (nonatomic, retain) IBOutlet UILabel *aLabel;
不过,不要认为这很重要。编译器通常可以解决这个问题。
编辑01:
在 IB 中,确保视图控制器的类设置为 QuizManViewController
而不仅仅是 UIView
。
【讨论】:
感谢您的建议,但没有奏效。我一直为此生气,我尝试将其全部删除并重新开始,但没有任何效果,啊!以上是关于接口构建器问题:连接 IBOutlet 时,获取“此类与键的键值编码不兼容”的主要内容,如果未能解决你的问题,请参考以下文章
接口生成器、@IBOutlet 以及 Swift 中委托和数据源的协议
如何将 IBOutlet 值从视图传递到 VIPER iOs 中的交互器?