界面构建器问题:在连接IBOutlet时,出现“此类不符合关键值编码的要求”的错误。

3

以下是我的操作步骤:

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文件,在视图中拖动一个新的UILabel控件。

我在这里测试程序,它运行得很好。

5) 右键单击文件所有者,将'aLabel'从Outlets连接到UILabel上。

我在这里运行程序,但它崩溃了。从日志中的信息:

*** Terminating app due to uncaught exception 'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:这个类不能使用关键值编码方式为键aLabel设置数值。'


我登录只是为了点赞并说“谢谢!” - VTPete
2个回答

1

我已经解决了这个问题!

视图是从选项卡控制器中加载的,我将nib名称设置为“QuizMainViewController”,但我没有将视图的类标识设置为“QuizMainViewController”,而是停留在默认值“UIViewController”。

当视图被加载时,它认为它是UIViewController的一个实例,因此它不知道aLabel属性。

故事的寓意:使用选项卡控制器时,为具有自己的视图控制器的nib设置nib名称和类标识。


0

尝试:

@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


谢谢你的建议,但是它没有起作用。我已经为此疯狂了,尝试删除所有内容并重新开始,但什么都不起作用,啊! - Robert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接