iOS UIをコードで構築するメモ

まえがき

つまりはストーリーボードを使わないUI構築を行いたい。
トラックパッドで図形操作は大変なのである。

ストーリーボードを使わないようにする

SingleViewテンプレートでプロジェクトを作成したら、main.storyboardを使わない設定にする。

画面を生成

AppDelegate.swiftのapplication()を以下のように書き換え。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = ViewController()
    self.window?.makeKeyAndVisible()
        
    return true
}

rootViewControllerが最初に表示される画面になる。

UI構成

ViewControllerのviewDidLoad()で必要なコントロール(UILabelとか)を作ってaddSubView()する。
タップされたときのアクションとかも登録できる。
IBOutletとかIBActionとかしない。
UIStackViewを使うとAutoLayoutが楽。

画面遷移

遷移先ViewController生成してpresent()する。

let vc = ViewController2()
self.present(vc, animated: true, completion: nil)

遷移元に戻る場合はdismiss()する。

データの受け渡し

present()する前に遷移先ViewControllerオブジェクトへ直接渡せば一応できる

let vc = ViewController2()
vc.message = "0123456789"
self.present(vc, animated: true, completion: nil)

または、CoreDataのやり方を真似て、AppDelegate経由でやり取りする。
次のコードでAppDelegateを取得できるので、AppDelegateにデータを持たせておけば良い。
集中管理にもなるか?

let appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate
ios  swift  uikit