3

NSAlertアプリのメイン画面にエラー メッセージを表示するために を使用しています。基本的に、これNSAlertは私のメインView Controllerのプロパティです

class ViewController: NSViewController {

    var alert: NSAlert?

    ...

}

そして、いくつかの通知を受け取ると、いくつかのメッセージを表示します

func operationDidFail(notification: NSNotification)
{
    dispatch_async(dispatch_get_main_queue(), {

        self.alert = NSAlert()
        self.alert.messageText = "Operation failed"
        alert.runModal();
    })
}

これで、複数の通知を受け取ると、通知ごとにアラートが表示されます。つまり、最初のメッセージで表示され、「OK」をクリックすると、消えてから2番目のメッセージで再び表示されます...これは通常の動作です。

私が達成したいのは、この一連のエラー メッセージを回避することです。私は実際には最初のものだけを気にします。アラート ビューが現在表示されているかどうかを知る方法はありますか? alert.isVisibleiOSのようなものUIAlertViewですか?

4

2 に答える 2

1

モーダルを実行する代わりに、試すことができます

- beginSheetModalForWindow:completionHandler:

ソース: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSAlert_Class/#//apple_ref/occ/instm/NSAlert/beginSheetModalForWindow:completionHandler :

完了ハンドラーで、アラート プロパティを nil に設定します。また、アラート プロパティが nil の場合にのみアラートを表示します (これは、アラートを閉じた後の最初の毎回になります)。編集:ドキュメントには、あなたが探しているフラグの種類について何も書かれていません。

于 2016-03-22T15:07:12.187 に答える