首页 文章

接口构建器问题:在连接IBOutlet时,获取“此类不符合密钥值的密钥值”

提问于
浏览
3

这是我做的:

1)创建新的UIViewController子类,使用NIB勾选界面构建器

2)在 Headers 中:

@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界面构建器,将新的UILabel拖到视图中 .

我在这里测试程序,运行正常 .

5)右键单击文件的所有者,将“aLabel”从Outlets连接到UILabel .

我在这里跑,它崩溃了 . 来自日志的消息:

***由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是密钥值,符合密钥aLabel .

2 回答

  • 0

    我已经解决了这个问题!

    视图是从标签栏控制器加载的,我已将nib名称设置为“QuizMainViewController”但我没有将视图的Class标识设置为“QuizMainViewController”它被卡在默认值“UIViewController” .

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

    故事的道德:当使用标签栏控制器时,为具有自己的视图控制器的笔尖设置笔尖名称和类标识 .

  • 1

    尝试:

    @interface QuizMainViewController : UIViewController 
    {
        IBOutlet UILabel* aLabel;
    }
    

    据说,您不再需要在Objective-C 2.0中执行此操作,但我在iPhone上遇到问题而将其排除在外 .

    编辑:

    你可以尝试改变

    @property (nonatomic, retain) IBOutlet UILabel* aLabel;
    

    @property (nonatomic, retain) IBOutlet UILabel *aLabel;
    

    不要认为那应该是重要的 . 编译器通常可以解决这个问题 .

    Edit01:

    在IB中,确保视图控制器的类设置为 QuizManViewController 而不仅仅是 UIView .

相关问题