objective-c - Cocoa NSAlert 不将警报显示为工作表

标签 objective-c cocoa storyboard nsalert

我有以下代码,希望在 AppDelegate.m 中将警报显示为工作表。

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {

    if ([self.socket.inputStream streamStatus] == 2) {

        NSStoryboard *storyBoard = [NSStoryboard storyboardWithName:@"Main" bundle:nil];
        NSWindowController *mainWindowController = [storyBoard instantiateControllerWithIdentifier:@"MainWindow"];

        NSAlert *alert = [[NSAlert alloc] init];
        [alert addButtonWithTitle:@"OK"];
        [alert setMessageText:NSLocalizedString(@"Warning", @"Warning")];
        [alert setInformativeText:NSLocalizedString(@"Disconnect before quit this app!!", @"Disconnet before quit")];
        [alert beginSheetModalForWindow:mainWindowController.window completionHandler:^(NSModalResponse returnCode) {

        }];

        return NO;

    } else {

        return YES;
    }
}

但不幸的是,结果警报并未以表格形式显示。就像截图一样。

doesNotShowAlertAsSheet

我不明白为什么。并且想知道如何将警报显示为表格。请帮助我!!

最佳答案

这对我有用。我不太了解。

可能是因为 beginSheetModalForWindow:

部分

在你的问题中,似乎 beginSheetModalForWindow:mainWindowController.window

我将其从 mainWindowController.window 更改为 self.view.window 并且它有效,如下所示:

[alert beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse returnCode)
{
    ....
}];

也许这会对我的思考有所帮助。

关于objective-c - Cocoa NSAlert 不将警报显示为工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44237185/

相关文章:

iphone - objective-c : How to only delete all file under a directory but keep the directory itself

iphone - IB 自定义 UITableViewCell - 单元格和详细文本的动态高度

iPhone-如何保存 View Controller 对象本身?

ios - 如何在 iOS 中设置字符限制

ios - Xcode6 - ibtool 失败,退出代码为 255

ios - 如何从另一个访问 View Controller ?

iphone - 我们可以在应用程序最小化后调用该方法吗?

objective-c - Mac 中的叠加窗口

objective-c - 如何让 NSTextView 具有不同的字体大小仅用于打印?

ios - 如何仅使用 Storyboard创建宽度为 0.5px 的线条?