没有调用NSWindowController子类上的方法

问题描述 投票:-1回答:1

我有一个正在创建的窗口,它是基于单击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方法没有触发...

objective-c cocoa nswindow nswindowcontroller
1个回答
1
投票
您在分配/初始化行中使用NSWindowController,您希望它成为HKLProfileWindowController实例吗?为什么?

您还需要将File's Owner自定义类设置为HKLProfileWindowController,但是当您要求HKLProfileWindowController时,没有理由期望这足以获得NSWindowController实例。您得到的是一个NSWindowController,并且不使用任何子类代码。

如果您的代码来自实现HKLProfileWindowController类之前的代码,但是鉴于您在此处粘贴的内容,这就是为什么您的断点不会被击中的原因,我将删除此答案。

© www.soinside.com 2019 - 2024. All rights reserved.