添加视图控制器

时间:2011-10-12 03:00:19

标签: ios viewcontroller

我正在使用多个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];导致应用崩溃,但为什么?

2 个答案:

答案 0 :(得分:2)

通常此错误表示您未在笔尖中设置视图插座。进入用户界面nib,右键单击“文件所有者”。将“视图”右侧的圆圈拖到笔尖的根视图上。这通常可以帮到你。

如果文件的所有者设置正确,则表明您在视图控制器定义中不存在的某个视图上指定了IBOutlet。右键单击每个视图(包括您的根视图)并检查以确保您的任何IBOutlet旁边没有黄色三角形警告。

答案 1 :(得分:0)

因此,当您尝试以模态方式呈现它时,视图控制器会抛出异常。这是第一次访问控制器的视图,因此控制器将在该点加载笔尖。发生这种情况时,nib加载机制会尝试在视图控制器中为键delegate设置一个值,然后崩溃,因为视图控制器显然没有delegate属性。也许你有一个,但删除它,忘了修理你的笔尖?