まえがき
つまりはストーリーボードを使わない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