xcode - 模态表在应用程序中无法工作已完成启动吗?

标签 xcode macos cocoa modal-dialog osx-yosemite

我正在尝试在应用程序完成启动时以模式方式显示工作表。如果我将代码放在通用操作中并在应用程序启动后的某个地方执行它,它会按预期工作并且工作表会很好地下降。如果我采用相同的代码并将其放置在 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 的内容如上,产生正确的结果。这是为什么?

最佳答案

NSAppbeginSheet: 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/

相关文章:

ios - 如何从 xib 中的单元格转到 Storyboard 中的 VC

macos - 如何查找 Mac 文档路径(与语言无关)

c - 终端背景颜色并不总是使用 "\033[0m"正确重置

django - 在 OSX 上缺少 libgeos_c.so

iphone - 将十进制数作为字符串输入 NSDecimalNumber 的简单方法?

swift - 设置完成后,如何自动调用 NSSpeechSynthesizer Delegate 协议(protocol)方法?

objective-c - Xcode 一起触发函数和 Action

iphone - Xcode 4 - 连接 socket

cocoa - 从 OSX lion 上的版本浏览器恢复不起作用...有什么想法吗?

ios - 使用手动推送导航时 Storyboard元素不可见