NVKCategoryViewの紹介
NVKCategoryViewは、複数のビューの表示を切替える事のできるビューです。限られた面積の中で数多くのビューを表示したい場合に使うと便利です。
右の図がサンプルプログラムのスクリーンショットです。タイトルテキストの左にある三角ボタンをクリックして、そのグループを展開したり折り畳んだりする事ができます。
ウィンドウが狭い時は最小限のビューを表示すればよく、またウィンドウが広い時は全てのビューを表示できます。したがって狭い画面に合わせた設計にする必要がなくなり、画面を有効に使う事ができます。
ダウンロード
NVKCategoryViewのソースコードと関連ファイルをダウンロードするには下記のリンクをクリックして下さい。
NVKCategoryViewを含んだサンプルプログラムのソースコードをダウンロードするには下記のリンクをクリックして下さい。
使い方
NVKCategoryViewを使う手順を説明します。
- ソースファイルを自分のプロジェクトにコピーする
- 表示するビューを用意する
- NVKCategoryViewを配置する
- Localizable.stringsを用意する
- 表示するビューを登録する
1. ソースファイルを自分のプロジェクトにコピーする
ダウンロードしたファイルを解凍してできたフォルダの中には五つのファイルが入っています。以下の五つのファイルです。
- NVKCategoryView.h
- NVKCategoryView.m
- NVKCategoryTitleView.h
- NVKCategoryTitleView.m
- NVKCategoryBackground.png
全てのファイルをあなたのプロジェクトにコピーして下さい。FinderからファイルをドラッグしてXcodeのプロジェクトファイルにドロップすればコピーできます。右の図はサンプルプログラムにファイルをコピーした結果です。

2. 表示するビューを用意する
表示するビューはあなたが用意する必要があります。そのビューはウィンドウ上に配置しないで、カスタムビューにしておいて下さい。カスタムビューは下の図の様にLibraryパレットからドラッグして、nibウィンドウにドロップすれば作る事ができます。

ドロップしてできたカスタムビューアイコンをダブルクリックすれば、そのカスタムビューを表すウィンドウが開きます。そこにボタンやテキストフィールド等のコントロールを配置すればOKです。
3. NVKCategoryViewを配置する
ウィンドウ上にNVKCategoryViewを配置して下さい。カスタムビューをパレットからドラッグしてウィンドウにドロップし、クラスをNVKCategoryViewに指定すればOKです。クラスの指定は、右の図の様にインスペクタのIdentityグループで行ないます。
スクロールビューの中に入れると正常動作しなくなりますので、入れないで下さい。
4. Localizable.stringsを用意する
プロジェクトにLocalizable.stringsというファイルを作って入れて下さい。Resourcesグループの中に作るのがいいでしょう。右クリックで現れるコンテキストメニューで「追加」ー「新規ファイル...」を実行します。

空のファイルを選択します。

名前を入力します。

このファイルはタイトルテキストを指定するのに使います。
"titleKey" = "タイトルテキスト";
という形式でキーと値のペアをLocalizable.stringsに記述して下さい。ここで記述したキーを後で使います。サンプルプログラムでは以下のような内容にしています。
Localizable.strings(English)
"flipOptionTitle" = "flip option";
"lineJoinStyleTitle" = "line join style";
"windingRuleTitle" = "winding rule";
"scaleOptionTitle" = "scale option";
"opacityTitle" = "opacity";
"strokeAndFillTitle" = "stroke & fill";
Localizable.strings(Japanese)
"flipOptionTitle" = "反転オプション";
"lineJoinStyleTitle" = "線の接続方法";
"windingRuleTitle" = "内側と外側の判定方法";
"scaleOptionTitle" = "倍率オプション";
"opacityTitle" = "不透明度";
"strokeAndFillTitle" = "線と塗りつぶし";
Localizable.stringsファイルはローカライズ可能にしておきます。ファイルを右クリックして「情報を見る」を実行し、「一般」タブの一番下にある「ファイルをローカライズ可能にする」ボタンをクリックします。そして「ローカリゼーションを追加」ボタンをクリックしてJapaneseを追加します。Englishは不要であれば削除して下さい。
5. 表示するビューを登録する
最後に初期化コードの中でNVKCategoryViewに表示するビューを登録して終了です。
登録作業を行うクラスからNVKCategoryViewと表示する各ビューにアクセスできないといけないので、アウトレットを追加して接続しておいて下さい。
サンプルプログラムのMyDocument.hは以下の様になっています。赤字が追加すべきコードです。
//
// MyDocument.h
// NVKCategoryViewSample
//
// Copyright 2008 Novemberkou. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@class NVKCategoryView;
@interface MyDocument : NSPersistentDocument
{
IBOutlet NVKCategoryView *categoryView;
IBOutlet NSView *strokeAndFill,*windingRule,*flip,*scale,*opacity,*lineJoinStyle;
}
@end
まず登録するビュー一つに対して一つの辞書を作成します。この辞書には
- タイトルテキストを表すキー
- 表示するビュー
の二つの情報を入れておきます。タイトルテキストを表すキーは先ほどLocalizable.stringsに記述したキーの名前を使います。表示するビューは接続したアウトレットを使います。
これらの情報をそれぞれNVKCategoryTitleKey, NVKCategoryTargetViewKeyというキーで辞書に登録します。具体例は下のコードを見て下さい。
辞書を作成したらNVKCategoryViewのaddCategorys:メソッドを使ってビューを登録します。複数のビューを一気に登録しますので、辞書の配列を引数にします。
//
// MyDocument.m
// NVKCategoryViewSample
//
// Copyright 2008 Novemberkou. All rights reserved.
//
#import "MyDocument.h"
#import "NVKCategoryView.h"
@implementation MyDocument
- (id)init
{
self = [super init];
if(self != nil)
{
// initialization code
}
return self;
}
- (NSString *)windowNibName
{
return @"MyDocument";
}
- (void)windowControllerDidLoadNib:(NSWindowController *)windowController
{
NSDictionary *item = [NSDictionary dictionaryWithObjectsAndKeys:
@"strokeAndFillTitle",NVKCategoryTitleKey,
strokeAndFill,NVKCategoryTargetViewKey,
nil];
NSDictionary *item2 = [NSDictionary dictionaryWithObjectsAndKeys:
@"windingRuleTitle",NVKCategoryTitleKey,
windingRule,NVKCategoryTargetViewKey,
nil];
NSDictionary *item3 = [NSDictionary dictionaryWithObjectsAndKeys:
@"flipOptionTitle",NVKCategoryTitleKey,
flip,NVKCategoryTargetViewKey,
nil];
NSDictionary *item4 = [NSDictionary dictionaryWithObjectsAndKeys:
@"scaleOptionTitle",NVKCategoryTitleKey,
scale,NVKCategoryTargetViewKey,
nil];
NSDictionary *item5 = [NSDictionary dictionaryWithObjectsAndKeys:
@"opacityTitle",NVKCategoryTitleKey,
opacity,NVKCategoryTargetViewKey,
nil];
NSDictionary *item6 = [NSDictionary dictionaryWithObjectsAndKeys:
@"lineJoinStyleTitle",NVKCategoryTitleKey,
lineJoinStyle,NVKCategoryTargetViewKey,
nil];
[super windowControllerDidLoadNib:windowController];
[categoryView addCategorys:[NSArray arrayWithObjects:item,item2,item3,item4,item5,item6,nil]];
}
@end


前へ
ホームへ