一讳癌,關(guān)閉窗口退出程序
使用過mac的伙伴應(yīng)該知曉一種情況飘痛,mac上的一些應(yīng)用點(diǎn)擊應(yīng)用窗口左上角“x”按鈕也就是關(guān)閉按鈕后汽绢,應(yīng)用并非真正退出,而是處于一種模態(tài)運(yùn)行當(dāng)中卷玉。
由于工作項(xiàng)目的需要哨颂,要求點(diǎn)擊關(guān)閉按鈕,關(guān)閉應(yīng)用窗口的同時關(guān)閉應(yīng)用程序運(yùn)行相种。以下提出兩種方法:
一種很簡單的方法:直接在AppDelegate中添加
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender{
? ? ? ? return YES;
}
BOOL布爾值返回YES表示窗口程序兩者都關(guān)閉威恼,返回NO表示只關(guān)閉窗口;
另一種方法:在窗口window所在的windowController中添加NSWindowDelegate代理方法
在- (void)windowDidLoad 方法中添加代理
self.window.delegate = self;
實(shí)現(xiàn)代理方法
//控制的窗口的關(guān)閉
- (BOOL)windowShouldClose:(id)sender {
exit(0);
return YES;
}
其中BOOL布爾值本身返回值是對當(dāng)前窗口是否關(guān)閉的控制
二,NSAlert使用
NSAlert *alert = [[NSAlert alloc] init];
alert.messageText = @"提示";
[alert setShowsHelp:NO];
alert.informativeText = @"請輸入您的口令";
alert.alertStyle = NSAlertStyleWarning;
[alert addButtonWithTitle:@"確定"];
[alert runModal];
其中messageText是提示的標(biāo)題,informativeText是提示內(nèi)容沙咏,alertStyle是提示的樣式丹锹,runModal則是運(yùn)行alert提示框!
當(dāng)然也可以自定義NSAlert,通過[[[NSAlert window] contentView] addSubview:view]接口來添加子視圖view馏谨,并設(shè)置子視圖的位置和大小别渔,依次來添加自定義內(nèi)容,如表格、文本框之類的視圖哎媚。
如果要自定義NSAlert??下方按鈕樣式喇伯,需要先刪除原先的按鈕,通過[[NSAlert window] contentView]中的子視圖來實(shí)現(xiàn)拨与,判斷子視圖中如果存在NSButton類型稻据,則移除該子視圖。
自定義按鈕向alert視圖的響應(yīng)函數(shù)傳遞消息的方式可以通過[NSApp endSheet: [alert window] returnCode:NSAlertAlternateReturn];這樣類似的語句來完成买喧。
參考博客:blog.csdn.net/freewaywalker/article/details/38275491
個人總結(jié)分享捻悯,謝謝!S倜今缚!