Xamarin.Macでアプリ起動時にコードでStoryboardを切り替える方法
Xamarin.Macの起動時に複数のストーリーボードからコードで選択する方法がわからなかったのでそのメモ。
デフォルトで起動時に表示されるインターフェイスはinfo.plistのMain Interfaceで指定されています(さらにInterface Builderの[is Initial Controller]にチェックが入っているWindow Controllerが表示対象)。
この起動時に表示されるインターフェイスをコードで変更する方法です。
そもそもストーリーボードの使い方がよくわかってない*1のでストーリーボードの追加方法から。
ストーリーボードを追加する
- ファイル→新しいファイル→ストーリーボードでSub.storyboardを作成する
- 作成したSub.storyboardをInterfaceBuilderで開いてWindowControllerを追加する
- InterfaceBuilderでWindowControllerを選択→IdentityInspectorを選択→StoryboardIDにMainWindowと入力する
- 保存する
public override void DidFinishLaunching(NSNotification notification) { // 呼んじゃだめ!! //base.DidFinishLaunching(notification); // StoryBoardを呼び出し var storyboard = NSStoryboard.FromName("Sub", null); // StoryBoardからViewControllerを呼び出し var controller = storyboard.InstantiateControllerWithIdentifier("MainWindow") as NSWindowController; // 表示 controller.ShowWindow(this); }
以上っす。
*1:Ctrlキー押しながらdragとか無理っと指つりながら作業してます。
*2:インテリセンスで入力するとbase.DidFinishLaunching()も追加されるけどこれは呼んじゃだめ(「陰」のP24参照)
*3:コードは Working with Storyboards - XamarinのLoading from codeそのまま。