.NET for iOSでStoryboardを使う

提供: MonoBook
2024年7月10日 (水) 06:10時点におけるAdministrator (トーク | 投稿記録)による版 (→‎storyboardを編集する)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動


.NET for iOSの新規プロジェクトのテンプレートではAppDelegateのFinishedLaunching()でUIViewControllerを生成するようになっています。

Visual Studio for MacではStoryboardを利用できましたが、 強制移行先のVisual Studio CodeC# Dev KitではStoryboardを利用できなくなったので 「UIKitをSwiftUI風に使い、耐え難きを耐え、忍び難きを忍び、押さば押せ、引かば押せ、これ即ち自己滅却の精神なり」ということでしょう。

[Register ("AppDelegate")]
public class AppDelegate : UIApplicationDelegate {
	public override UIWindow? Window {
		get;
		set;
	}

	public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
	{
		// create a new window instance based on the screen size
		Window = new UIWindow (UIScreen.MainScreen.Bounds);

		// create a UIViewController with a single UILabel
		var vc = new UIViewController ();
		vc.View!.AddSubview (new UILabel (Window!.Frame) {
			BackgroundColor = UIColor.SystemBackground,
			TextAlignment = UITextAlignment.Center,
			Text = "Hello, iOS!",
			AutoresizingMask = UIViewAutoresizing.All,
		});
		Window.RootViewController = vc;

		// make the window visible
		Window.MakeKeyAndVisible ();

		return true;
	}
}

こんなのやってられないのでStoryboardを使うように変更する。 なお、2024年7月時点のC# Dev Kitの「開発版」ではStoryboardが扱えます。

大雑把な手順[編集 | ソースを編集]

storyboardを追加する[編集 | ソースを編集]

「追加」「新しいファイル」「iOS」「iOS ストーリーボード」から「Main.storyboard」を追加する。

storyboardを編集する[編集 | ソースを編集]

  • Main.storyboardを開く (Xcodeで開く)
  • Xcode右上の「+ボタン (Show Library)」からViewControllerを追加する
  • ViewConttoler(iPhoneの絵)が表示されるので上部をクリックして選択する
  • Identity Inspectorを開きClass欄に「HomeViewController」と入力する
  • Attributes inspectorを開きView Controllerの「Is Initial View Controller」のチェックボックスにチェックを入れる

Info.plistを編集する[編集 | ソースを編集]

  • プロパティ「メインのストーリーボード ファイル ベース名」を追加する
  • 値を「Main」にする

AppDelegateを編集する[編集 | ソースを編集]

AppDelegateのFinishedLaunchingはtrueを返すだけにする。

[Register ("AppDelegate")]
public class AppDelegate : UIApplicationDelegate {
	public override UIWindow? Window {
		get;
		set;
	}

	public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
	{
		return true;
	}
}

おわり[編集 | ソースを編集]

ビルドしてアプリを起動してみる。