1

在有人将此标记为重复之前,我已经彻底搜索了 Stack Overflow,但没有任何建议有帮助。

问题:我添加了一个自定义视图,Master-Detail app当单击 a 时,它被推送到主视图的顶部button。我已将文件的文件所有者设置xib为自定义类。如果我建立一个单一IBOutlet的连接,应用程序就会崩溃并说“类不是键值编码兼容的键”我已经将一个NSLog放入viewDidLoad我的自定义类的函数中,我看到它永远不会被实例化。我觉得我可能错过了一个非常简单的步骤,但从我从所有其他有关此问题的帖子中可以看出,他们的解决方案对我不起作用。

设置视图控制器.m:

#import "SettingsViewController.h"

@interface SettingsViewController ()

@end

@implementation SettingsViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    NSLog(@"viewDidLoad");
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

启动视图的代码行:

UIViewController *settingsViewController = [[UIViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
[self.navigationController pushViewController:settingsViewController animated:YES];

我已经通过堆栈溢出尝试过的事情:

  1. 确保文件的所有者类设置为自定义类名

  2. 确保代码中没有任何额外IBOutlets内容viewcontroller已被删除或重命名

  3. 删除文件并重新创建它们

  4. 清理项目,kill xcode删除设备上的应用程序,重新打开xcode并重建项目

  5. 从头开始重建项目

在此先感谢您的任何建议!

4

1 回答 1

1

这一行:

UIViewController *settingsViewController = [[UIViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];

应该:

SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];

文件所有者类的名称基本上只是 IB 告诉它哪些连接可用的信息。在实例化过程中实际上并未使用它。通过调用[[UIViewController alloc] ...您正在创建一个普通UIViewController实例(显然没有定义您的键)。

于 2013-10-10T21:15:07.000 回答