MonoMac/Preferencesウインドウを付ける
2015年2月4日 (水) 03:36時点における153.220.18.74 (トーク)による版 (ページの作成:「MonoMacでMacのアプリで定番のPreferences(設定画面)を実装する。 ==実装1== ===プロジェクトにPreferencesWindowを追加する=== *「...」)
実装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);
}
}
なお、上記の例ではモーダルウインドウにはなっていないので注意すること。モーダルウインドウにしたい場合は下記を参照して書き換える。