MonoMac/Preferencesウインドウを付ける

提供: MonoBook
< MonoMac
2015年2月4日 (水) 03:36時点における153.220.18.74 (トーク)による版 (ページの作成:「MonoMacMacのアプリで定番のPreferences(設定画面)を実装する。 ==実装1== ===プロジェクトにPreferencesWindowを追加する=== *「...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

MonoMacMacのアプリで定番のPreferences(設定画面)を実装する。

実装1

プロジェクトにPreferencesWindowを追加する

  • 「追加」→「新しいファイル」でファイル追加ダイアログを表示する。
  • 「Cocoa Window with Controller」を選び、名前を「PreferencesWindow」にする(名前は何でもよい)。

PreferencesWindow.xibの基本設定をする

  • Preferences.xibを開く(Interface Builderが起動する)
  • ウインドウを選択した状態でアトリビュートインスペクターを開き、以下のチェックボックスを外す
    • Visible At Launch
    • Release When Close
  • ついでにTitleも「○○環境設定」など分かりやすい名前に変えておくとよい

以上が終わったらInterface Builderを閉じる。

MainMenu.xibに操作を追加する

  • MainMenu.xibを開く(Interface Builderが起動する)
  • アシスタントエディターを開く
  • ソースコード側で「AppDelegate.h」を開く
  • デザイナー側で「MacCocoaApp」→「Preferences」を表示させ、キーボードのCtrlを押しながらマウスをソースコード側へドラッグする
  • ダイアログが開くので以下のように設定する
    • Connection → Action
    • Name → ShowPreferencesWindow (メニュー項目が押されたときに呼ばれるメソッド名なので何でもよい)

以上が終わったらInterface Builderを閉じる。Interface Builderを閉じることでXamarin Studio側に対応するソースコードが自動的に生成される。

AppDelegate.csに処理を追加する

前述の操作でAppDelegate.csに部分メソッドが準備された状態になっているので中身を書いてやる。AppDelegate.csを開き、Xamarin Studioテキストエディタ上で「partial」とタイピングすればインテリセンスが働き「 partial void ShowPreferencesWindow(NSObject sender)」などと出てくるはず。

    public partial class AppDelegate : NSApplicationDelegate
    {
        // 〜〜中略〜〜

        PreferencesWindowController preferencesWindowController;

        partial void ShowPreferencesWindow(NSObject sender)
        {
            if (preferencesWindowController == null)
            {
                preferencesWindowController = new PreferencesWindowController();
            }
            preferencesWindowController.ShowWindow(this);
        }
    }

なお、上記の例ではモーダルウインドウにはなっていないので注意すること。モーダルウインドウにしたい場合は下記を参照して書き換える。

関連項目

参考文献