4

カスタムビューと3つのボタンを備えたNSAlertを表示しています。カスタムビューには2つのテキストフィールドがあり、ユーザーはログインできます。

Mac App Storeでは、同様のデザインのNSAlertが登場します。ユーザーがサインインボタンをクリックしても、NSAlertは閉じません(資格情報が確認されるまで)。Appleはどのようにしてアラートを維持していますか?

4

2 に答える 2

10

NSButtonあなたが違った振る舞いをしたいのを手に入れてください。ターゲットとアクションを変更します。(元のターゲット/アクションを呼び出すには、変更する前にそれらを保持します。)

NSAlert *alert = ...;
NSButton *button = [[alert buttons] objectAtIndex:...];

id oldTarget = [button target];
SEL oldAction = [button action];
[button setTarget:self];
[button setAction:@selector(verifyCredentials:)];

または、アラートをカスタムウィンドウコントローラーおよびXIBとして作成することもできます(これは、AppleがApp Storeの場合に行った方法です)。その場合、ボタンの動作をきめ細かく制御できます。

于 2012-08-02T23:22:50.163 に答える
-1

スウィフト4スタイル

let alert = NSAlert()
alert.alertStyle = .informational
alert.messageText = "Y/N?"
alert.addButton(withTitle: "Y")
alert.addButton(withTitle: "N")

guard let window = view.window else { return } // for NSViewController

alert.beginSheetModal(for: window) { res in
    if res == .alertFirstButtonReturn {
        // "Y" action
    } else {
        // "N" action        
    }
}
于 2018-04-23T21:56:57.457 に答える