我有一些默认的NSViewController。在其中我有代码:
- (void)viewDidLoad {
// Do view setup here.
NSUserDefaults *defaults = [[NSUserDefaults alloc] init];
if(![defaults boolForKey:@"isLoggedIn"]){
NSLog(@"Not logged in... Loading settings");
NSViewController *settings = [[NSViewController alloc] initWithNibName:@"Settings" bundle:nil];
[self.view addSubview:settings.view];
}
else{
NSLog(@"Logged in... Loading inbox");
NSViewController *inbox = [[NSViewController alloc] initWithNibName:@"Inbox" bundle:nil];
[self.view addSubview:inbox.view];
}
[super viewDidLoad];
}
该代码适用于加载视图取决于NSUserDefaults。
但是当我尝试在Inbox.m / Inbox.h中声明某些内容时,我发现了这个错误:
Could not connect the action testView: to target of class NSViewController
在Inbox.m中我有:
- (void)viewDidLoad {
NSLog(@"Inbox loaded.");
[super viewDidLoad];
// Do view setup here.
}
并且NSLog永远不会被执行。我想要连接几个nib和不同的NSViewController。
我的猜测是我正在以错误的方式添加子视图。它就像视觉元素一样,没有别的。
答案 0 :(得分:0)
我通过以下方式解决这个问题:
Inbox *inbox = [[Inbox alloc] initWithNibName:@"Inbox" bundle:nil];
_viewController = inbox;
//Where _viewController is
NSViewController *_viewController;
//defined in
@interface Default : NSViewController{
NSViewController *_viewController;
}
现在一切正常。