今度は履歴を格納するモデルクラスを作成する。
こんな感じ。
SelectionHistory.h
@interface SelectionHistory : NSObject {
NSMutableArray* _history_list;
}
- (void)setSize:(NSSize)size;
- (NSSize)sizeAtIndex:(int)index;
- (NSArray*)menuList;
@end
#menuList はポップアップメニューに表示する為の文字列一覧を返す。
このクラスを前回のコードへ追加し機能させる。
まずは前回同様のポップアップメニューを表示させてみる。
イニシャライザの中でテスト用にサイズを追加する。
- (id)init
{
self = [super init];
if (self) {
_history_list = [[NSMutableArray alloc] init];
[self setSize:NSMakeSize(500, 500)];
[self setSize:NSMakeSize(600, 600)];
[self setSize:NSMakeSize(700, 700)];
}
return self;
}
#setSize は次の様になる。
- (void)setSize:(NSSize)size
{
NSValue* value = [NSValue valueWithSize:size];
[_history_list addObject:value];
}
NSSizeは構造体なのでそのままでは NSMutableArrayに入れられない。そこでラッパーとなる NSValue を利用する。
#menuListではポップアップメニュー表示用に文字列の配列を作る。
- (NSArray*)menuList
{
NSMutableArray* results = [NSMutableArray array];
for (NSValue* value in _history_list) {
NSSize size = [value sizeValue];
[results addObject:[NSString stringWithFormat:@"%.0fx%.0f", size.width, size.height]];
}
return results;
}
前回のコードで、この #menuList を呼ぶように書き換える。
メニューでた。
- - -
表示系は基本的なものができた。
次は履歴への追加に着手する。