Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何打开一个窗口并选择该窗口并使其处于焦点?_Objective C_Cocoa_Macos_Nswindow_Nswindowcontroller - Fatal编程技术网

Objective c 如何打开一个窗口并选择该窗口并使其处于焦点?

Objective c 如何打开一个窗口并选择该窗口并使其处于焦点?,objective-c,cocoa,macos,nswindow,nswindowcontroller,Objective C,Cocoa,Macos,Nswindow,Nswindowcontroller,我正在尝试使用以下代码打开NSC窗口: NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"]; [window showWindow:nil]; 窗口打开正常,但上一个窗口仍然是主窗口并处于焦点。我尝试了以下代码来强制主窗口,但它不起作用。窗口仍然有一个禁用的标题栏,不接受关键事件等 [self.window makeKeyAndOrderFront:self]

我正在尝试使用以下代码打开NSC窗口:

NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"];
[window showWindow:nil];
窗口打开正常,但上一个窗口仍然是主窗口并处于焦点。我尝试了以下代码来强制主窗口,但它不起作用。窗口仍然有一个禁用的标题栏,不接受关键事件等

[self.window makeKeyAndOrderFront:self];
[self.window makeMainWindow];
我似乎能够使上一个窗口失去焦点的唯一方法是在调用showWindow:with[[NSApp mainWindow]close]后关闭窗口


有什么想法吗?

makekey和derfront:
是最好的选择。您确定
self.window
window
引用了同一个对象吗?

我通过将WindowController分配给nib文件所有者,而不是在nib中有一个单独的NSWindowController对象,解决了这个问题。

谢谢,但它仍然不起作用。我添加了[WindowMakeKeyandDerfront:self];直接在橱窗后打电话:但还是不起作用。我应该在其他地方调用它吗?
MakeKeyandDerfront:
是正确的方法。不管你叫它什么地方。还有别的问题。例如,主窗口可能是模态的,或者某些东西拒绝放弃第一响应者状态。是的,nib中存在问题,请参阅我的答案以获得解决方案。这与showWindow一起工作良好:一旦nib设置正确。@TylerA。下面是我的答案不确定为什么我在这里得到了-1,有人告诉我如何改进这个问题吗?我想补充一点,我忘了在Interface Builder中将窗口插座连接到我的NSWindow。这导致代码对我不起作用,所以对于任何阅读此代码的人,请不要忘记连接窗口插座。一个简单的错误,但是一个可以让你沮丧很久的错误