AppControllerを作る【実践的Macintoshプログラミング解説】

印刷用表示 |テキストサイズ 小 |中 |大 |

CoreData版 Repeating Motif Generator の開発 Repeating Motif Wonderland CoreData 実践的 Macintosh プログラミング解説

LinkIconホーム

更新日 2009-05-24

テーブルビューにパラメータではなくリサージュ図形を表示する

AppControllerを作る

appControllerIcon.tiff AppControllerはアプリケーションのデリゲートとして働くコントローラオブジェクトとして設計します。したがってNSApplicationが送ってくるデリゲートメッセージのうち、必要なものに応答する役割を持たせます。
 また、それだけではなくアプリケーション全体に関わる処理もここで実行します。まずは値変換の登録を行ないますが、将来的にはデフォルトデータベースにアプリケーションデフォルトを設定する処理なども行なう予定です。

新規ファイル

 Xcodeのファイルメニューから「新規ファイル…」を実行します。CocoaグループのObjective-C classを選んで「次へ」をクリックします。

newFileAssistant31.png

 クラス名AppControllerを入力します。

newFileAssistant31_3.png

 インターフェイスファイルは特に変更する所はありません。

//
//  AppController.h
//  RepeatingMotifGenerator
//
//  Copyright NovemberKou 2008 . All rights reserved.
//

#import <Cocoa/Cocoa.h>


@interface AppController : NSObject
{

}

@end

 initializeメソッドで値変換の登録を行ないます。RMGPathToImageTransformerのインスタンスを生成して、NSValueTransformerのクラスメソッドsetValueTransformer:forName:で登録します。ここで登録した名前をInterface Builderで指定します。

//
//  AppController.m
//  RepeatingMotifGenerator
//
//  Copyright NovemberKou 2008 . All rights reserved.
//

#import "AppController.h"

#import "RMGPathToImageTransformer.h"


@implementation AppController

+ (void)initialize
{
    RMGPathToImageTransformer   *pathToImage;

    pathToImage = [[[RMGPathToImageTransformer alloc] init] autorelease];
    [NSValueTransformer setValueTransformer:pathToImage
                                    forName:@"RMGPathToImage"];
}

@end

AppControllerをインスタンス化する

objectInLibrary.png 次はMainMenu.nibの中にAppControllerクラスのオブジェクトをインスタンス化します。Xcodeの「グループとファイル」リストにあるMainMenu.nibをダブルクリックしてInterface Builderを起動して下さい。

 Libraryパレットの中にObjectという青い立方体のアイコンが入っていますので探して下さい。"Objects & Controllers"グループの中の"Controllers"の中に入っています。


dragObject.png 見つかったらそれをドラッグして、nibウィンドウでドロップします。


appControllerIdentity.png このオブジェクトがAppControllerクラスのオブジェクトになる様に設定します。

 インスペクタの"i"アイコンを選択してClass Identityを設定します。先ほどAppControllerクラスを作成したので、これが選べる様になっている筈です。

 ついでにnibウィンドウ上で表示される名前もAppControllerにしておきます。これはInterface Builder IdentityのNameを設定すればOKです。


mainMenuNib.png すると、こうなります。


FilesOwnerDelegate.png AppControllerでアプリケーションのデリゲートメッセージを処理する予定なので、アプリケーションのデリゲートがAppControllerになるように設定します。

 File's Ownerアイコンをクリックして選択し、アウトレットを接続します。delegate行の右端にある丸をクリックしてドラッグすると線がのびてくるので、AppControllerアイコン上でマウスボタンを放すと接続されます。