MacOS开发 技术集锦iOS开发iOS Developer

MacOS学习五:关闭窗口退出程序与NSAlert

2017-03-29  本文已影响160人  简鱼7819

一,关闭窗口退出程序

使用过mac的伙伴应该知晓一种情况,mac上的一些应用点击应用窗口左上角“x”按钮也就是关闭按钮后,应用并非真正退出,而是处于一种模态运行当中。

由于工作项目的需要,要求点击关闭按钮,关闭应用窗口的同时关闭应用程序运行。以下提出两种方法:

一种很简单的方法:直接在AppDelegate中添加

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender{

        return YES;

}

BOOL布尔值返回YES表示窗口程序两者都关闭,返回NO表示只关闭窗口;

另一种方法:在窗口window所在的windowController中添加NSWindowDelegate代理方法

在- (void)windowDidLoad 方法中添加代理

self.window.delegate = self;

实现代理方法

//控制的窗口的关闭

- (BOOL)windowShouldClose:(id)sender {

exit(0);

return YES;

}

其中BOOL布尔值本身返回值是对当前窗口是否关闭的控制

二,NSAlert使用

NSAlert *alert = [[NSAlert alloc] init];

alert.messageText = @"提示";

[alert setShowsHelp:NO];

alert.informativeText = @"请输入您的口令";

alert.alertStyle = NSAlertStyleWarning;

[alert addButtonWithTitle:@"确定"];

[alert runModal];

其中messageText是提示的标题,informativeText是提示内容,alertStyle是提示的样式,runModal则是运行alert提示框!

当然也可以自定义NSAlert,通过[[[NSAlert window] contentView] addSubview:view]接口来添加子视图view,并设置子视图的位置和大小,依次来添加自定义内容,如表格、文本框之类的视图。

如果要自定义NSAlert👇下方按钮样式,需要先删除原先的按钮,通过[[NSAlert window] contentView]中的子视图来实现,判断子视图中如果存在NSButton类型,则移除该子视图。

自定义按钮向alert视图的响应函数传递消息的方式可以通过[NSApp endSheet: [alert window] returnCode:NSAlertAlternateReturn];这样类似的语句来完成。

参考博客:blog.csdn.net/freewaywalker/article/details/38275491

个人总结分享,谢谢!!!

上一篇 下一篇

猜你喜欢

热点阅读