好吧,在我的rootViewController中,我能够将我自己定义的另一个viewController推送到屏幕上。但是,当我在viewController和它自己的.h文件之间建立任何连接时,程序只是挂起并崩溃,给我这个错误:
2010-06-04 15:36:13.944 pooldocfinal [11971:20b] ***由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是键值编码 - 符合关键标签1。'
当我除了那个UILabel之外没有连接任何东西时会发生这种情况。这是我用来声明/推送视图的代码(名为balanceViewController):
- (IBAction) pushedBalanceButton
{
balanceViewController *controller = [[balanceViewController alloc] initWithNibName:@"balanceViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
[controller release];
}
这是我推动的视图的.h文件,它只有一件事:
#import <UIKit/UIKit.h>
@interface balanceViewController : UIViewController {
IBOutlet UILabel *label1;
}
@end
就像我说的,除非我在Interface Builder中实际建立了在balanceViewController.xib和balanceViewController.h中的任何东西之间的连接(在这种情况下,它是一个UILabel对象),一切正常。
答案 0 :(得分:1)
你应该分配一个balanceViewController,而不是一个UIViewController。
答案 1 :(得分:0)
我相信如果你有一个IBOutlet,你需要定义getter / setter。这就是Key Value编码兼容的含义。您可以通过@property语句和@synthesize语句执行此操作,或者如果您愿意,可以手动执行此操作。
@interface balanceViewController : UIViewController {
IBOutlet UILabel *label1;
}
@property (nonatomic, retain) IBOutlet UILabel *label1;
@end
然后添加
@synthesize label1;
到您的实施
编辑 - PS,不要忘记你的dealloc方法中的[label1 release]