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。

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

*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合键 aLabel 的键值编码。”

4

2 回答 2

1

我已经解决了这个问题!

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

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

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

于 2010-05-06T08:27:09.257 回答
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.

于 2010-05-05T13:42:54.870 回答