shigeki.takeguchi.log

アラフィフおじさんの技術日記

Storyboardを使用しないでアプリを準備する(Swift3)。

Storyboardを使用しないSwiftでアプリを準備する。

以前書いた記事からiOS 10 SDKになってアップデートしないといけないところとなります。
SDKの10からAppDelegate.swiftでの記述が変わったようですね(Swiftだけの記述になってますがObjective-cでも変わっているはず)。
Storyboardを使わないでViewControllerを呼び出す場合、変更されたapplicationメソッドを使えばまぁいけるわけです。
引数launchOptionsの記述方法が変わったんですね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
var navigationController: UINavigationController?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
let viewController = ViewController()
navigationController = UINavigationController(rootViewController: viewController)
window?.rootViewController = navigationController
return true
}

func applicationWillResignActive(_ application: UIApplication) {
}

func applicationDidEnterBackground(_ application: UIApplication) {
}

func applicationWillEnterForeground(_ application: UIApplication) {
}

func applicationDidBecomeActive(_ application: UIApplication) {
}

func applicationWillTerminate(_ application: UIApplication) {
}

}

何も考えずに以前のままのソースをまるっとコピーして使おうとすると注意されました。 以下のような感じでprivateアクセス修飾子をつけろっていわれて、はいはいつけますよってつけるとまぁapplicationメソッドは呼ばれなくなりますわな。 でだったらどうするのよってことでXcodeのアドバイスのままにapplicationDidFinishLaunchingメソッドを追記したらそちらが呼ばれるようになります。 どちらがいいかは好みの分かれるところかと思いますね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
var navigationController: UINavigationController?

private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}

func applicationDidFinishLaunching(_ application: UIApplication) {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
let viewController = ViewController()
navigationController = UINavigationController(rootViewController: viewController)
window?.rootViewController = navigationController
}

func applicationWillResignActive(_ application: UIApplication) {
}

func applicationDidEnterBackground(_ application: UIApplication) {
}

func applicationWillEnterForeground(_ application: UIApplication) {
}

func applicationDidBecomeActive(_ application: UIApplication) {
}

func applicationWillTerminate(_ application: UIApplication) {
}

}

shigeki.takeguchi

渋谷の某ソーシャルゲームの会社でフロントエンドエンジニアとして働いてます。20世紀よりウェブ業界。気づいたらアラフィフ業界人です。
まだまだ現場で粘り強く作る側でいたいと思います。