Fork me on GitHub

役立ちぬ開発史、それはただのブログ

覚えておくといい、ブログの時代は終わる。いつかその内、きっとたぶん…

Xcode6.1でSwiftとObjective-CごとにStoryboardを使わないで“Hello World!”をラベル出力するの方法

| Comments

 あけましておめでとうございます。年明け早々に、近いうちにネイティブアプリを作る機会に恵まれようとしています。Storyboardを使わずにコードを書いていくことになりそうなので、nonStoryboardでプロジェクトを作る方法を紹介していきます。

How to create project without storyboard in xcode6.1 ?

 Xcode6になってから"Empty Application"が無くなり、Storyboardが標準で付いてくる仕様になりました。Appleのぜひ素敵なStoryboardを使って開発してくれとの気持ちの表れだろうと思います。個人的には、エンジニア以外の多くの人が開発しやすくなるため嫌いではないですが、Storyboardを望まない声が多いのも事実です。  現状ではXcode6.1.1を使っています。Swiftで書きたい方やObjective-Cで書きたい方がいると思います。SwiftとObjective-Cごとに分けて、Storyboardを使わずにプロジェクト作る方法を紹介していきます。

 SwiftもObjective-Cも共通して、Single View Applicationを選択 して作ります。

xcode6.1.1-without-storyboard-pic1

In the case of Swift!!

 まず、初期画面のDeployment Infoの中にあるMain Interfaceの中の"Main"を削除します。

xcode6.1.1-without-storyboard-pic2

 削除して、何もない空っぽの状態にします。

xcode6.1.1-without-storyboard-pic3

 Main.storyboardLaunchScreen.xibは、使わないので削除して構いません。

xcode6.1.1-without-storyboard-pic4

 最後にAppDelegate.swiftに、以下のコードに書きます。

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
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        self.window?.backgroundColor = UIColor.whiteColor()
        self.window?.makeKeyAndVisible()
        return true
    }

    func applicationWillResignActive(application: UIApplication) {

    }

    func applicationDidEnterBackground(application: UIApplication) {

    }

    func applicationWillEnterForeground(application: UIApplication) {

    }

    func applicationDidBecomeActive(application: UIApplication) {

    }

    func applicationWillTerminate(application: UIApplication) {

    }

}

 すると、白い画面が表示されます。何も表示されていないので、不安になるかもしれませんが、この表示になったら大丈夫です。これで、Storybored無しで、開発できる状態になりました。

xcode6.1.1-without-storyboard-pic5

Swiftで"Hello World!"

 Storybored無しで開発できるようになったけど、どうやって作ったらいいのか分からない方もいると思います。そこで簡単ですが、定番の"Hello World!"のラベル表示を例に、作り方を紹介していきます。  まずAppDelegate.swiftに、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
33
34
35
36
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        self.window?.backgroundColor = UIColor.whiteColor()
        self.window?.rootViewController = ViewController()
        self.window?.makeKeyAndVisible()
        return true
    }

    func applicationWillResignActive(application: UIApplication) {

    }

    func applicationDidEnterBackground(application: UIApplication) {

    }

    func applicationWillEnterForeground(application: UIApplication) {

    }

    func applicationDidBecomeActive(application: UIApplication) {

    }

    func applicationWillTerminate(application: UIApplication) {

    }

}

 続いてViewController.swiftの中に、UILabelを生成するコードを書きます。

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
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.initLabel()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }

    func initLabel(){

        let helloLabel: UILabel = UILabel(frame: CGRectMake(60, 100, 200, 30))

        helloLabel.text = "Hello World!"
        helloLabel.textAlignment = NSTextAlignment.Center
        helloLabel.textColor = UIColor.whiteColor()
        helloLabel.backgroundColor = UIColor.orangeColor()

        self.view.addSubview(helloLabel)

    }

}

 すると、オレンジ色の背景に"Hello World!"と書かれたラベルの画面が表示されます。

xcode6.1.1-without-storyboard-pic6

In the case of Objective-C!!

 こちらもSwiftのときと同じように、初期画面のDeployment Infoの中にあるMain Interfaceの中の"Main"を削除します。

xcode6.1.1-without-storyboard-pic7

 削除して、何もない空っぽの状態にします。

xcode6.1.1-without-storyboard-pic8

 Main.storyboardLaunchScreen.xibは、使わないので削除して構いません。

xcode6.1.1-without-storyboard-pic9

 最後に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
#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    UIViewController viewController = [[UIViewController alloc] init];
    self.window.rootViewController = viewController;
    [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

 実行するとSwiftのときと同じように、白い画面が表示されます。こちらも、これでStorybored無しで、開発できる状態になりました。

xcode6.1.1-without-storyboard-pic10

Objective-Cで"Hello World!"

 こちらも、Storybored無しで開発できるようになったけど、どうやって作ったらいいのか分からない方に向けて、定番の"Hello World!"のラベル表示の作り方を紹介していきます。  まずAppDelegate.hに、ViewControllerのクラスの先行宣言(前方宣言、前方参照)のコードを書きます。ヘッダーにヘッダーファイルをimportしても動きますが、相互参照問題が発生する危険があります。クラスの先行宣言をすることで回避します。

1
2
3
4
5
6
7
8
9
10
#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow window;
@property (strong, nonatomic) ViewController viewController;

@end

 次にAppDelegate.mに、ViewControllerを指定するコードに書きます。 ヘッダーファイルをimportするのは、なるべく実装ファイルで行います。

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.window.backgroundColor = [UIColor whiteColor];
    self.viewController = [[ViewController alloc] init];
    self.window.rootViewController = self.viewController;
    [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

 続いてViewController.mに、UILabelを生成するコードを書きます。

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
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self initLabel];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)initLabel
{
    CGRect rect = CGRectMake(60, 100, 200, 30);
    UILabel *helloLabel =[[UILabel alloc] initWithFrame:rect];

    helloLabel.text = @"Hello World!";
    helloLabel.textAlignment = NSTextAlignmentCenter;
    helloLabel.textColor = [UIColor whiteColor];
    helloLabel.backgroundColor = [UIColor orangeColor];

    [self.view addSubview:helloLabel];
}

@end

 すると、Swiftのときと同じように、オレンジ色の背景に"Hello World!"と書かれたラベルの画面が表示されます。

xcode6.1.1-without-storyboard-pic11

 以上になります。SwiftとObjective-Cと分けて紹介してきました。お好きな方で、ジャカジャカと開発していってください。

Comments