OS X NSAlert窗口在Objective-C中的xCode 8中无法关闭

时间:2016-10-12 20:31:03

标签: xcode cocoa xcode8 nsalert

我在xCode 7中使用了以下方法来显示警报/错误。我知道alertWithMessageText现已弃用。如果我在xCode 8中使用此方法(虽然已弃用),则当用户按下“确定”按钮时窗口不会关闭。我已经查看了几十个帖子,用beginSheetModalForWindow:completionHandler:方法替换它,但无法让它工作。一些示例代码将非常感激。

(运行xCode 7方法时,我收到以下控制台消息: 2016-10-12 15:35:23.537072 eBuyBooks [7886:2192964] [布局]检测到缺失约束。它无法放置,因为没有足够的约束来完全定义大小和原点。添加缺少的约束,或设置translatesAutoresizingMaskIntoConstraints = YES,并为您生成约束。如果此视图在macOS 10.12及更高版本上手动布局,您可以选择不从覆盖中调用[super layout]。在DETECTED_MISSING_CONSTRAINTS上设置断点以进行调试。此错误仅记录一次。)

// in Header file
NSAlert * alertWithOkButton;

.....

// in implementation file
- (void)errorPopUp:(NSString *)reason detail:(NSString *)detail {

    alertWithOkButton = [NSAlert alertWithMessageText:reason
                                        defaultButton:@"Ok"     
                                      alternateButton:nil       
                                          otherButton:nil       
                            informativeTextWithFormat:@"%@",detail];

    [alertWithOkButton runModal];    
}

1 个答案:

答案 0 :(得分:0)

尝试将其作为替代品,不推荐使用:

// in implementation file
- (void)errorPopUp:(NSString *)reason detail:(NSString *)detail {
        NSAlert *alert = [[NSAlert alloc] init];
        [alert setMessageText:reason];
        [alert setInformativeText:detail];
        [alert setAlertStyle:NSCriticalAlertStyle]; // or NSWarningAlertStyle, or NSInformationalAlertStyle
        [alert addButtonWithTitle:@"OK"];

        [alert runModal];
}

要设置符号断点,请转到断点导航器(项目窗口左上角的小轮廓箭头),单击窗口左下角的“+”,选择“符号断点”并输入{{1}为符号。

如果断点被击中,您可以在调试器视图中输入DETECTED_MISSING_CONSTRAINTS以打印缺少约束的视图的描述。