一步一步熟悉Mac app开发(七)之NSAlert

概要

阶段一,警告窗口游离在外。
阶段二,警告窗口处于主窗口内。

阶段一 游离弹窗

1.新建项目,打开storyboard,在默认的View Controller中添加一个按钮,并使用拖拽大法
至ViewController.m 中。


image.png

1.打开ViewController.m,新增一个alert方法,并且在按钮事件中调用。

//拖拽大法后产生的按钮事件被单击的方法。
- (IBAction)btn_surprise:(id)sender {
    [self alert];
}

//自定义alert方法
- (void)alert{
    NSAlert *alert = [[NSAlert alloc] init];
    alert.messageText = @"系统提示:";
    alert.informativeText = @"你有没有发现其实你是头可爱的小猪猪?";
    [alert addButtonWithTitle:@"嗯,发现了。"];
    [alert addButtonWithTitle:@"呃?是吗?"];
    [alert addButtonWithTitle:@"风太大,没听清楚你说啥。"];
    NSInteger ret = [alert runModal];
    switch(ret){
        case NSAlertFirstButtonReturn:
            printf("你是说你发现你是头猪?\n");
            break;
        case NSAlertSecondButtonReturn:
            printf("你是说你没发现你是头猪?\n");
            break;
        case NSAlertThirdButtonReturn:
            printf("不能愉快聊天了,886。\n");
            break;
        default:
            printf("可能发现了一个错误。\n");
            break;
    }
}

2.阶段一完成,效果如下。(此时的警告弹窗可以拖拽移动)


image.png

阶段二 固定在窗口内部

1.注释掉原有调用方法,使用beginSheetModalForWindow方法。

//    NSInteger ret = [alert runModal];
//    switch(ret){
//        case NSAlertFirstButtonReturn:
//            printf("你是说你发现你是头猪?\n");
//            break;
//        case NSAlertSecondButtonReturn:
//            printf("你是说你没发现你是头猪?\n");
//            break;
//        case NSAlertThirdButtonReturn:
//            printf("不能愉快聊天了,886。\n");
//            break;
//        default:
//            printf("可能发现了一个错误。\n");
//            break;
//    }
    [alert beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse returnCode) {
        //此处省略处理语句(为各位看官省流量,真的不是我懒。)
    }];

2.完成,效果如下。


image.png

你可能感兴趣的:(一步一步熟悉Mac app开发(七)之NSAlert)