その3 "Hello world!!"を表示してみよう!! 中編
前回はHello worldを表示した画面を作成しましたが、今回は作成した画面を表示してみましょう。
今回やること
- AppDelegate.mのソースファイルの編集して画面を表示する
AppDelegateって?
画面を表示するためには、AppDelegate.mファイルを編集します。AppDelegate.mにはAppDelegateクラスについての処理が書かれています。AppDelegate.mでは、アプリが起動した場合や終了した場合の処理を記述できます。
今回は、このアプリの起動時に画面を表示する処理を追加します。
そもそもクラスって?
iOSのアプリ開発では、基本的にクラス単位に開発を行います。クラスが何かというと、一言でいうなら「特定のデータとその処理をまとめたもの」です。例えばNSStringという文字列を表現するクラスでは、文字列自身の保持とその編集方法を提供します。画面管理を行うUIViewControllerクラスでは、ユーザーが入力した情報を処理したり、画面の更新などを行います。
クラスの中身は、基本的にクラス名.h/クラス名.mという2つのファイルで定義します(3つ以上の場合もあります)。
この記事では、専門用語をざっくりと説明します。より詳しい説明は、Wikipediaのクラス)を参照してください。
AppDelegate.mの編集
ざっとAppDelegate.mの中身をみてみよう
9 #import "AppDelegate.h" 10 11 @implementation AppDelegate 12 13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 14 { 15 self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; 16 // Override point for customization after application launch. 17 self.window.backgroundColor = [UIColor whiteColor]; 18 [self.window makeKeyAndVisible]; 19 return YES; 20 } 〜 中略 〜 48 49 @end
9行目 #import "AppDelegate.h"
#import "ヘッダーファイル名"
で、指定したファイルを読み込みます。
Objective-Cでは、クラスを作成するために、クラスの定義とクラスの実装という2つの作業を行う必要があります。 一般的に.hファイルでクラスの定義を行い、これをヘッダーファイルと呼びます。
.mファイルは、クラスの実装を行い、これをソースファイルと呼びます。 一般的にソースファイルでは、定義をするクラスのヘッダーファイルや利用するクラスのヘッダーファイルをimportで読み込む必要があります。
ここではAppDelegateを定義するために、"AppDelegate.h"を読み込んでいます。
11行目, 49行目
11 @implementation AppDelegate 〜中略〜 49 @end
@imlementation AppDelegateからクラスの実装が始まり、@endが実装の終了になります。クラスの実装は、この間(〜中略〜の部分)に記述します。
13〜20行目 application didFinishLaunchingWithOptionsメソッドの定義
クラスの実装といっても具体的に何をするのでしょう?答えはメソッドの定義を行います。メソッドというのは、例えばウィンドウというクラスの場合、「ウィンドウを開く」「ウィンドウを閉じる」「ウィンドウを移動する」「ウィンドウのサイズを変更する」というのがそれぞれメソッドになります。この「ウィンドウを開く」という処理を記述する作業が、メソッドの定義になります。
AppDelegateは、アプリケーションが起動したときや、停止、終了したときの処理を行うクラスなので、そうしたメソッドが定義されています。 下のソースコードは、アプリケーションが起動したときに呼ばれる「application didFinishLaunchingWithOptions」メソッドの定義です。
13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 14 { 15 self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; 16 // Override point for customization after application launch. 17 self.window.backgroundColor = [UIColor whiteColor]; 18 [self.window makeKeyAndVisible]; 19 return YES; 20 }
詳しい説明は次回以降に行い、前回作成したビューコントローラーMetronomeViewControllerをwindowに表示してみましょう。
9行目から~20行目を以下のように変更します。行頭に+が付いている行が追加した行になります。
9 #import "AppDelegate.h" + 10 #import "MetronomeViewController.h" 11 12 @implementation AppDelegate 13 14 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 15 { 16 self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; 17 // Override point for customization after application launch. 18 self.window.backgroundColor = [UIColor whiteColor]; + 19 MetronomeViewController* viewController = [[MetronomeViewController alloc] initWithNibName:@"MetronomeViewController" bundle:nil]; + 20 [self.window setRootViewController:viewController]; 21 [self.window makeKeyAndVisible]; 22 return YES; 23 }
- 10行目 前回作成したMetronomeViewController.hをimportしています。クラスを利用する場合は、必ず利用するクラスのヘッダーファイルをimportします。
- 19行目 MetronomeViewControllerのオブジェクトを生成しています。まだこの段階では、MetronomeViewControllerの画面は作られたけど、表示先が指定されていません。
- 20行目 このアプリケーションのwindowオブジェクトに19行目で生成したMetronomeViewControllerオブジェクトを設定しています。
Command+Rで動作確認してみましょう。
Hello world!が表示されましたか?
次の画像ができたらおめでとう!!
次回は、今回の内容の解説をしたいと思います。
まとめ
- クラスは「特定のデータとその処理」をまとめたもの
- iOSのアプリ開発は、クラス単位で作成する
- クラスは、クラス名.h/クラス名.mという2つのファイルで定義する
- AppDelegateクラスは、アプリケーションが起動したときや、停止、終了したときの処理を行う