0

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

(当我运行 xCode 7 方法时,我收到以下控制台消息:2016-10-12 15:35:23.537072 eBuyBooks[7886:2192964] [Layout] Detected missing constraint for 。无法放置,因为没有足够的约束完全定义大小和原点。添加缺少的约束,或设置 translatesAutoresizingMaskIntoConstraints=YES 并为您生成约束。如果此视图在 macOS 10.12 及更高版本上手动布局,您可以选择不从您的覆盖。在 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];    
}
4

1 回答 1

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];
}

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

如果断点被命中,您可以进入po $arg1调试器视图以打印缺少约束的视图的描述。

于 2016-10-14T10:20:37.813 回答