更新履歴
広告
PRサイト
関連サイト

インターフェイスファイルとInterface Builder上の作業


ToolbarControllerのインターフェイスファイル

ToolbarControllerはNSObjectのサブクラスとします。すると、インターフェイスファイルは以下の様になります。

ToolbarController.h
#import <Cocoa/Cocoa.h>


@interface ToolbarController : NSObject
{
    IBOutlet    NSView              *pictureWidthView;
    IBOutlet    NSView              *pictureHeightView;
    IBOutlet    NSWindowController  *windowController;

    NSMutableDictionary *toolbarItems;
}

@end

アウトレットが三つ必要ですので、追加しました。二つはそれぞれ画像の幅と高さを入力するテキストフィールドが入ったビュー、一つはウィンドウコントローラです。テキストフィールドが入ったビューはNSToolbarItemを作る時に必要となります。ウィンドウコントローラはNSToolbarItemのターゲットとして指定するので、必要となります。

NSMutableDictionaryはNSToolbarItemを保持する為の辞書です。配列ではなく辞書にしているのには訳がありまして、キーでオブジェクトを呼び出せるのが便利だからです。NSToolbarは各NSToolbarItemを"identifier"というNSString型の文字列で管理しており、NSToolbarItemが必要になった時に"identifier"に対応するNSToolbarItemを要求してきます。そこでキーを"identifier"、値をNSToolbarItemにして辞書に登録しておけば、取り出すのに便利という訳です。


カスタムビューを作る

テキストフィールドが入ったビューのアウトレットを用意しましたが、このビューはInterface BuilderでRMGDocument.nibの中に作っておく必要があります。カスタムビューはパレットの中に入っている薄い青の長方形をドラッグして、nibウィンドウにドロップすれば作る事ができます。

custom view in palette

nibウィンドウ左下の二つのアイコンが作成したカスタムビューpictureWidthViewとpictureHeightViewです。ビューのサイズは50x32としました。そのビューの中にテキストフィールドを配置して、大きさを40x19としました。

toolbar item view

配置したテキストフィールドにバインディングを設定します。value項を、

  • Bind to:File's Owner
  • Controller key:なし
  • Model key path:document.pictureWidth(またはpictureHeight)

とします。またテキストフィールドにはNSNumberFormatterを取り付けて、入力範囲を制限しておきます。(パレットからNSNumberFormatterをドラッグしてテキストフィールドにドロップすればOK)


ToolbarControllerをインスタンス化する

ToolbarControllerは各ドキュメントに一つ必ず必要なものなので、nibファイルでインスタンス化しておく事にします。(上のnibウィンドウでは既にインスタンス化されています)XcodeのToolbarController.hアイコンをドラッグしてnibウィンドウにドロップし、Interface BuilderにToolbarControllerクラスを認識させてからインスタンス化して下さい。



ページの先頭へ戻る