在任何人将此标记为重复之前,我已经彻底搜索了Stack Overflow并且没有任何建议有所帮助。
问题:我在Master-Detail app
添加了一个自定义视图,该视图在点击button
时被推到主视图之上。我已将xib
文件的文件所有者设置为自定义类。如果我连一个IBOutlet
连接,应用程序崩溃并说“类不符合键值的关键值”我已将NSLog
放入我自定义的viewDidLoad
函数中我看到它从未被实例化过。我觉得我可能错过了一个非常简单的步骤,但从我从其他所有帖子中可以看出这个问题,他们的解决方案对我不起作用。
SettingsViewController.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];
我已经通过堆栈溢出尝试的事情:
确保将File的Owner类设置为自定义类名
确保代码中已删除或重命名的IBOutlets
中没有任何额外viewcontroller
删除文件并重新创建
清理项目kill xcode
,从设备上删除该应用,重新打开xcode
并重建项目
从头开始重建项目
提前感谢任何建议!
答案 0 :(得分:1)
这一行:
UIViewController *settingsViewController = [[UIViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
应该是:
SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
文件所有者类的名称基本上只是IB告诉它可用连接的信息。在实例化期间实际上并未使用它。通过调用[[UIViewController alloc] ...
,您正在创建一个普通的UIViewController
实例(显然没有定义您的密钥)。