MacOS 開發 - NSAlert

關鍵詞:NSAlertMacOS 開發beginSheetModalForWindow:addButtonWithTitlesetInformativeTextNSAlertStyle


使用 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章