我有一个正在创建的窗口,它是基于单击Tableview中的一行而创建的,如下所示:
HKLUserProfileController *userProfileController = [[HKLUserProfileController alloc] initWithNibName:@"HKLUserProfileController" bundle:nil];
_wc =[[NSWindowController alloc] initWithWindowNibName:@"HKLProfileWindowController"];
[_wc.window.contentView addSubview:userProfileController.view];
// other extraneous stuff here
[_wc showWindow:self];
if([_wc.window canBecomeKeyWindow]) {
[_wc.window makeMainWindow];
[NSApp activateIgnoringOtherApps:YES];
[self makeKeyAndOrderFront:self];
}
这有效,但是我似乎无法使该窗口成为主/键/前窗口。我尝试过:
...从我创建WindowController的地方开始,也从NSViewController的viewDidLoad / loadView内部,其视图已添加到Window。没有骰子。 (这是我的最终目标,因此,如果您发现明显的东西我不见了,请指出)。
所以我意识到我应该尝试在WindowController本身的子类中执行此操作,因此我想将其放在windowDidLoad中,但没有结果。我设置了一些断点,并尝试了其他逻辑初始化方法,但令我惊讶的是,其中的所有[[NONE均会触发。
@implementation HKLProfileWindowController
- (void)windowDidLoad {
[super windowDidLoad];
// breakpoint here
}
-(void)awakeFromNib {
// breakpoint here
}
- (id)init {
// breakpoint here
self = [super init];
if (self) {
// breakpoint here
}
return self;
}
@end
据我所知,我的xib已作为插座/代理正确连接到我的文件的所有者。这使我相信这是问题的根源,但是对于我的一生,我无法弄清问题是什么...我意识到keyWindow发生了什么-因为它来自TableView中的shouldSelectRow,它正在成为mouseDown事件的键,但是第一个窗口-拥有TableView-正在再次成为mouseUp事件的键...疯了!谢谢...
编辑
将为此寻找解决方案,但可以在此处发表评论!
((仍然无法弄清为什么init方法没有触发...
NSWindowController
,您希望它成为HKLProfileWindowController
实例吗?为什么?您还需要将File's Owner自定义类设置为HKLProfileWindowController
,但是当您要求HKLProfileWindowController
时,没有理由期望这足以获得NSWindowController
实例。您得到的是一个NSWindowController
,并且不使用任何子类代码。
如果您的代码来自实现HKLProfileWindowController
类之前的代码,但是鉴于您在此处粘贴的内容,这就是为什么您的断点不会被击中的原因,我将删除此答案。