MacOS 开发

来源:互联网 发布:曼秀雷敦洗面奶 知乎 编辑:程序博客网 时间:2024/06/11 12:21

关键词:NSAlertMacOS 开发beginSheetModalForWindow:addButtonWithTitlesetInformativeTextNSAlertStyle

  • 创建
    • 设置图片
    • 设置按钮
      • 1可以设置多个按钮
      • 2按钮的监听
  • NSAlertStyle
  • 自定义NSAlert

使用 xcode 编译,证书出错时,xcode会经常有个弹窗,这个效果可以用NSAlert 实现,如:

NSAlert

创建

- (void)openAlertPanel{    NSAlert *alert = [[NSAlert alloc] init];    alert.icon = [NSImage imageNamed:@"swift"];    //增加一个按钮    [alert addButtonWithTitle:@"OK"];//1000    //增加一个按钮    [alert addButtonWithTitle:@"NO"];//1001    //提示的标题    [alert setMessageText:@"提示的标题"];    //提示的详细内容    [alert setInformativeText:@"提示的详细内容"];    //设置告警风格    [alert setAlertStyle:NSInformationalAlertStyle];    //开始显示告警    [alert beginSheetModalForWindow:self.window                  completionHandler:^(NSModalResponse returnCode){                      //用户点击告警上面的按钮后的回调                      NSLog(@"returnCode : %d",returnCode);                  }     ];}

设置图片

使用 .icon 便可。图片大小、位置固定在左边。如果你的图片比较小,可能会出现下面的情况:

NSAlert


设置按钮

1、可以设置多个按钮

1个,2个…n 个,弹窗也会根据按钮个数、按钮标题文字长度 自动排布:
addButtonWithTitle

2、按钮的监听

可以在 beginSheetModalForWindow: completionHandler: 方法中返回的 returnCode 来判断点击的是哪一个按钮。

第一个添加的按钮对应的是 1000,第二是 1001,第三个为 1002,以此类推。


NSAlertStyle

typedef NS_ENUM(NSUInteger, NSAlertStyle) {    NSAlertStyleWarning = 0,    NSAlertStyleInformational = 1,    NSAlertStyleCritical = 2};

前两种在样式上没有什么太大区别,与上文图一样。第三种显示的图标会出现一个警号:

NSAlertStyleCritical


自定义NSAlert

步骤
1、通过[[[NSAlert window] contentView] addSubview:view]接口来添加子视图view;
2、设置子视图的位置和大小,依次来添加自定义内容,如表格、文本框之类的视图。
3、如果要自定义NSAlert��下方按钮样式,需要先删除原先的按钮,通过[[NSAlert window] contentView]中的子视图来实现,判断子视图中如果存在NSButton类型,则移除该子视图。
4、自定义按钮向alert视图的响应函数传递消息的方式可以通过[NSApp endSheet: [alert window] returnCode:NSAlertAlternateReturn];这样类似的语句来完成。


参考资料:
- 剑指人心:面板和警告框
http://www.macdev.io/ebook/panel.html

  • 简鱼7819
    http://www.jianshu.com/p/00d7c3201ede
原创粉丝点击