关闭后,NSwindow会多次显示停靠栏图标

时间:2016-01-05 10:14:19

标签: cocoa xcode6 nswindow

//My code:

- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag
{
    if(flag==NO)
    {
         id window;

        NSWindow *w = window;

       for(w in theApplication.windows)
        {   if(w==[[theApplication windows]objectAtIndex:0])
            {
                [w makeKeyAndOrderFront:nil]; 
            }
        }

    }
    return YES;
}

- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender;
{
     return NO;
}
- (BOOL)applicationOpenUntitledFile:(NSApplication *)sender
{

    return NO;
}

面临的问题 - 上面的代码显示无标题窗口 - 如果我从[w makeKeyAndOrderFront:nil];条件中删除if,则所有带有无标题窗口的窗口都会显示一次 - 使用open untitled方法不会停止显示窗口

必需 - 我只想关闭窗口打开

1 个答案:

答案 0 :(得分:0)

在对上述代码进行更多调查后,我找到了解决方案,如下所示

- 使用的方法是正确的 - 要再次加载相同的屏幕,我们需要在application.windows数组中找到该屏幕的索引。这可以通过使用代码来完成:

for (int i; i<[[[NSApplication sharedApplication]windows] count]; i++)
    {
        if (yourwindow==[[[NSApplication sharedApplication]windows] objectAtIndex:i])
        {
            NSLog(@"%d",i);
           //i is your screen index
        }
    }

现在在提到的代码中使用索引加载窗口,它也会阻止显示无标题窗口

注意:在加载方法完成后,应该使用窗口索引。