ObjCで作っていたiOSアプリをSwiftで作り直そうとしたらXcode 6からEmpty Applicationのテンプレートがなくなっていた。
なのでSingle View ApplicationのテンプレートをベースにStoryboardを使用しないアプリを作っていく。
「Create a new Xcode project」を選び、テンプレートを選択する画面で「iOS」→「Application」で「Single View Application」を選ぶ。
Product Nameは任意の名前を入力し、Languageは「Swift」を選び、次の画面で保存先を選んで保存。
Project、General画面でMain Interfaceの値から「Main」を消す。これはMain.storyboardを起動時に読み込まないようにしている。
不要になったMain.storyboardを削除する。参照だけではなくゴミ箱へ移動させてしまう。
以前のXcodeであったEmpty Applicationから作成したアプリのようになる。
ViewController.swiftを追加。またUINavigationControllerのrootViewControllerにViewControllerを追加した方がナビゲーションバーやステータスバー、遷移など後々やりやすくなるのでその記述もする。
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
| import UIKit
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow? var navigationController: UINavigationController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) ->; Bool { window = UIWindow(frame: UIScreen.mainScreen().bounds) window!.makeKeyAndVisible() var viewController: 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) { } }
|
Objective-Cの時にはこんな記述だった。
AppDelegate.h
1 2 3 4 5 6 7 8 9 10 11
| #import <UIKit/UIKit.h>
@class RootViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property( strong, nonatomic )UIWindow *window; @property( strong, nonatomic )RootViewController *viewController;
@end
|
AppDelegate.m
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 37 38 39 40
| #import "AppDelegate.h" #import "ViewController.h"
@interface AppDelegate () @end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.viewController = [[ViewController alloc] init]; UINavigationController *naviController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; self.window.rootViewController = naviController; [self.window makeKeyAndVisible]; return YES; }
- (void)applicationWillResignActive:(UIApplication *)application { }
- (void)applicationDidEnterBackground:(UIApplication *)application { }
- (void)applicationWillEnterForeground:(UIApplication *)application { }
- (void)applicationDidBecomeActive:(UIApplication *)application { }
- (void)applicationWillTerminate:(UIApplication *)application { }
@end
|