创建完全自定义的NSAlert

Fat*_*tso 6 customization cocoa objective-c nsalert

是否可以创建完全自定义的警报?我现在正在使用自定义工作表,但我希望具有工作表阻止的功能(如-[NSAlert runModal]).

当然,我只是想改变背景,真的和文字颜色.

Dav*_*ein 6

关于推荐解决方案的警告:

此代码会导致浪费且毫无意义的开销:

for (;;) {
    if ([NSApp runModalSession:session] != NSRunContinuesResponse)
        break;
}
Run Code Online (Sandbox Code Playgroud)

此代码直接从Apple文档页面复制 - 但它的目的是向开发人员显示可以在模式运行时插入有意义的代码以供后台执行.也就是说,你应该在break和closing括号之间有一些代码.但是示例中没有显示实际代码 - 并且像这样运行它只会导致应用程序重复轮询会话直到它结束.这就像在公路旅行中坐在汽车后座上的两岁孩子一样,问道:"我们还在吗?我们还在吗?我们还在吗?..."

如果你只是想要简单的模态执行,你的应用程序呈现模态窗口并暂停处理主/背景窗口直到模态结束,请使用:

[NSApp runModalForWindow: self.window];
Run Code Online (Sandbox Code Playgroud)

...然后在窗口关闭时退出模态会话,将其放入窗口控制器子类中:

- (void)windowWillClose:(NSNotification *)notification {
    [NSApp stopModal];
}
Run Code Online (Sandbox Code Playgroud)