アラートを表示する(NSAlert)
アラートの表示
アラートを作る
let alert = NSAlert()
ダイアログとして表示
alert.runModal()
押されたボタンを確認
runModal()
の戻り値で確認できます。
let response = alert.runModal() switch response { case .alertFirstButtonReturn: break case .alertSecondButtonReturn: break case .alertThirdButtonReturn: break default: break }
シートとして表示する
alert.beginSheetModal(for: window, completionHandler: nil)
押されたボタンを確認する
シート表示の第2引数のクロージャで確認できます。
alert.beginSheetModal(for: window) { response in switch response { case .alertFirstButtonReturn: break case .alertSecondButtonReturn: break case .alertThirdButtonReturn: break default: break } }
アラートのカスタマイズ
アイコン
デフォルトではアプリのアイコンが使用されますが変更可能です。
alert.icon = NSImage(named: “Awesome icon”)
スタイル
スタイルは下記の3種類が用意されています。 今のところinformationalとwarningは見た目上の違いはないそうです。 criticalについてはmacOS Human Interface Guidelinesの”Alerts”の章に従って使用するようにします。
informational
alert.alertStyle = .informational
warning
alert.alertStyle = .warning
critical
alert.alertStyle = .critical
メッセージ
- タイトル変更
alert.messageText = “Main Message”
- 追加テキスト変更
alert.informativeText = “Additional information text”
ボタン
addButton(withTitle:)
でボタンを追加できます。
これを使うとデフォルトのボタンは使われなくなります。
1回addButton(withTitle:)
を呼ぶと1個、2回呼ぶと2個…という風にボタンが増えていきます。
任意の数のボタンを追加できますが、3個までが想定されている個数のようです。
ここでは2個のボタンを追加する例をあげます。
alert.addButton(withTitle: “OK”) alert.addButton(withTitle: “Cancel”)
抑制ボタン
“次からこのメッセージを表示しない。”チェックボックスを表示できます。
alert.showsSuppressionButton = true
抑制ボタンのメッセージを変更
抑制ボタンはNSButtonなのでメッセージを変更できます。
alert.suppressionButton?.title = “No thank you”
アクセサリービュー
独自のビューを表示したい時はアクセサリービューとして設定します。 アクセサリービューはNSViewならなんでも表示できます。 抑制ボタンとボタンの間に表示されます。
let textView = NSTextView(frame: NSRect(x: 0, y: 0, width: 200, height: 150)) textView.string = “TEXT IN ACCESSORYVIEW” alert.accessoryView = textView