没有方法os NSWindowController子类被调用

时间:2015-07-15 19:56:15

标签: objective-c cocoa nswindow nswindowcontroller

我有一个窗口,我正在创建基于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内部,其视图已添加到窗口。没有骰子。 (这是我的最终目标,所以如果你看到一些我不知道的东西,请指出它。)

所以我意识到我应该在WindowController本身的子类中尝试这样做...所以我想把它放在 windowDidLoad 中,但没有结果。我设置了一些断点,并尝试了其他逻辑初始化方法,令我惊讶的是,它们中的根本就没用了。

@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作为Outlet / Delegate正确连接到我的文件所有者。这让我相信这是问题的根源,但对于我的生活,我无法弄清问题是什么......

...谢谢

修改

我意识到keyWindow正在发生的事情 - 因为它来自TableView中的shouldSelectRow,它正在成为mouseDown事件的关键,但是第一个窗口 - 它拥有TableView - 再次成为mouseUp事件的关键......令人抓狂!

将搜索解决方案,但在这里开放评论!

(仍然无法弄清楚为什么init方法没有开火......

1 个答案:

答案 0 :(得分:1)

您在alloc / init行中使用NSWindowController并希望它成为HKLProfileWindowController实例?为什么呢?

您还需要将文件所有者自定义类设置为HKLProfileWindowController,但是当您要求HKLProfileWindowController时,没有理由认为这足以获得NSWindowController实例。你得到的是一个NSWindowController,没有使用任何子类代码。

如果您的代码来自实施HKLProfileWindowController课程之前的代码,我将删除此答案,但鉴于您在此处粘贴的内容,这就是您的断点不会受到影响的原因。