NSAlert对话框样式
使用NSAlert可以弹出两种不同的视图效果。
1. 无模式对话框
通过[NSAlert beginSheetModalForWindow]接口,可以得到如下所示的alert sheet attached to a specified window,即依赖于特定窗口的提示框:
2. 无模式对话框
通过[NSAlert runModal]接口,可以得到如下所示的application-modal dialog,即模式对话框视图:
NSAlert自定义
默认的alert弹出视图,只能显示标题、提示、一到三个按钮之类的简单视图。如果想实现alert视图的任意布局,则需要自定义。
1.自定义内容
通过[[[NSAlert window] contentView] addSubview:view]接口来添加子视图view,并设置子视图的位置和大小,依次来添加自定义内容,如表格、文本框之类的视图。
2.自定义按钮
如果想调整alert视图下方的按钮的位置或样式,或者点击按钮后使alert视图先不关闭,则可以通过自定义的方式来实现。
首先,先去除默认的按钮。方法还是通过[[NSAlert window] contentView]中的子视图来实现,判断子视图中如果存在NSButton类型,则移除该子视图。
代码示例如下:
NSMutableArray *newSubViews = [[[NSMutableArray alloc] initWithObjects:accessoryView, nil] autorelease]; // accessoryView为自定义视图内容
for(NSView *view in contentView.subviews){
if ([view isKindOfClass:[NSButton class]]) {
[newSubViews addObject:view];
}
}
[contentView setSubviews:newSubViews];
自定义按钮向alert视图的响应函数传递消息的方式可以通过[NSApp endSheet: [alert window] returnCode:NSAlertAlternateReturn];这样类似的语句来完成。