我正在使用多个UIViewController
的项目。我刚刚添加了一个新按钮,当我单击新按钮时,应用程序崩溃并出现以下错误。
2011-10-11 22:51:57.227 BG-Prep[9156:207] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<ResourcesViewController 0x4b28540> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key delegate.'
* 首次调用堆栈:
代码与其他两个工作正常的页面完全相同(文件名除外)。这告诉我什么?
- (IBAction)resourceButtonTapped:(id)sender;
{
NSLog(@"Tapped the resource button");
ResourcesViewController *resourcesViewController = [[[ResourcesViewController alloc]
initWithNibName:@"ResourcesViewController" bundle:[NSBundle mainBundle]] autorelease];
NSLog(@"receiver's type: %@", NSStringFromClass([resourcesViewController class]));
resourcesViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:resourcesViewController animated:YES];
}
如果我取消注释这两行,我会得到以下内容:
2011-10-12 14:38:51.533 BG-Prep[10070:207] Tapped the resource button
2011-10-12 14:38:51.535 BG-Prep[10070:207] receiver's type: ResourcesViewController
最后一行[self presentModalViewController:resourcesViewController animated:YES];
导致应用崩溃,但为什么?
答案 0 :(得分:2)
通常此错误表示您未在笔尖中设置视图插座。进入用户界面nib,右键单击“文件所有者”。将“视图”右侧的圆圈拖到笔尖的根视图上。这通常可以帮到你。
如果文件的所有者设置正确,则表明您在视图控制器定义中不存在的某个视图上指定了IBOutlet。右键单击每个视图(包括您的根视图)并检查以确保您的任何IBOutlet旁边没有黄色三角形警告。
答案 1 :(得分:0)
因此,当您尝试以模态方式呈现它时,视图控制器会抛出异常。这是第一次访问控制器的视图,因此控制器将在该点加载笔尖。发生这种情况时,nib加载机制会尝试在视图控制器中为键delegate
设置一个值,然后崩溃,因为视图控制器显然没有delegate
属性。也许你有一个,但删除它,忘了修理你的笔尖?