我正在尝试在应用程序完成启动时以模式方式显示工作表。如果我将代码放在通用操作中并在应用程序启动后的某个地方执行它,它会按预期工作并且工作表会很好地下降。如果我采用相同的代码并将其放置在 applicationdidfinishlaunching 中,该工作表将显示为单独的窗口(这不是我需要的)。
[NSApp beginSheet:settingsWindow
modalForWindow:[NSApp keyWindow]
modalDelegate:nil
didEndSelector:nil
contextInfo:nil];
[NSApp runModalForWindow:settingsWindow];
[NSApp endSheet:settingsWindow];
[settingsWindow orderOut:self];
启动时可见选项已禁用。感谢您的任何建议。我也在 awakefromnib 中尝试过,但结果相同。
编辑:使用 [self PerformSelector:@selector(someAction:) withObject:self afterDelay:0.5];其中 someAction 的内容如上,产生正确的结果。这是为什么?
最佳答案
NSApp
的 beginSheet: modalForWindow: modalDelegate: didEndSelector: contextInfo:
和 endSheet:
是 deprecated in OS X 10.10 。您应该使用 beginSheet: completionHandler: on NSWindow实例以模态方式显示工作表窗口。
NSWindow *mainWindow = [NSApp windows][0];
[mainWindow beginSheet:settingsWindow completionHandler: nil];
顺便问一下,[NSApp keyWindow]
是否在 didFinishLaunching
中返回一个实例?
关于xcode - 模态表在应用程序中无法工作已完成启动吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28012846/