.NET for iOSでStoryboardを使う
.NET for iOSの新規プロジェクトのテンプレートではAppDelegateのFinishedLaunching()でUIViewControllerを生成するようになっています。
Visual Studio for MacではStoryboardを利用できましたが、 強制移行先のVisual Studio CodeとC# 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;
}
}
おわり 編集
ビルドしてアプリを起動してみる。