Cocoa NSAlert不会以表格形式显示警报

时间:2017-05-29 07:48:14

标签: 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

我无法理解为什么。并且想知道如何以表格形式显示警报。请帮帮我!!

1 个答案:

答案 0 :(得分:0)

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

可能是因为部分beginSheetModalForWindow:

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

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

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

可能会对我有所帮助。