Swift

Swift:メッセージのサプレス

NSAlertの応用です。

同じアラートを何回も出さないようにするサプレス機能を実装の仕方について記述します。全体のコードはスクリーンショットを参照してください。

注意と説明

  • アラートを出した後、responseCode in の中でチェックボックスのON/OFFを判別して、サプレス機能(ExecSupressProcess)を実装します。チェックが入っているかどうかはNSAlertFirstButtonReturnを見ます。
    wAlert.delegate = AppDelegate()
    wAlert.beginSheetModalForWindow(pWin)  { responseCode in                           

    if NSAlertFirstButtonReturn  == responseCode { self.ExecSupressProcess(wAlert.suppressionButton!.state, pCom1:pCom1) } 
    if NSAlertSecondButtonReturn == responseCode { self.ExecSupressProcess(wAlert.suppressionButton!.state, pCom1:pCom2)
  • ここでは、チェックが入っていたとき、ExecSupressProcessでメッセージに付与した番号を調べてアラート出力を制御しています。固有の番号やIDはNSAlertのコメントで引き渡すことができます。階層構造にしているのでわかりにくいですが、つぎのがコメントに相当します。
    ExecInfoAlert(cm.rcMsgMetadata, pMsg:cm.rcMSG[160], pIndex:160)
  • 気をつけないといけない点は、このメソッドが属するclassでNSAlertDelegateを宣言しておくことです。そうしないとコンパイルエラーになります。
    class AppDelegate:  NSViewController,NSApplicationDelegate,NSTableViewDataSource,NSTableViewDelegate, MKMapViewDelegate, NSAlertDelegate
  • 補足するまでもありませんが、ExecSuppressProcessで登録した番号がすでに登録済みであれば、アラートを出さないようにする必要があります。スクリーンショットの最初のメソッドを参照。

Screenshot 2016-01-02 06.59.46

Categories: Swift, 技術