超不人気シリーズの「Macのプログラミング入門」ですが、ブログも新しくしたことなので、気分を新たにその1からスタートします。(以前から数えるとその15です。)
二週間程前、まいけるさんと飲みに行ったついでにMacプログラミングの参考書「MacOSX Cocoaプログラミング第3版」(通称ヒレガス本)つうのを買いまして、その第6章ヘルパオブジェクトのP114にあるチャレンジ問題に挑戦したのが今回の内容です。動作は、左上の欄に記入して、”Add”ボタンを押すと、下の表(テーブル)に上から順番に挿入されていきます。「一度入力されたテーブルの内容を、ダブルクリックで編集可能にする」つうのがチャレンジ問題のポイントです。
以下にソースコードを示します。ポイントとなる編集用メソッドは本編に記載されています。実際にはこのソースコードだけでは動きません。”Interface Builder”を使っての設定が必要です。
#import
@interface AppController : NSObject {
IBOutlet NSTextField *newItemField;
IBOutlet NSTableView *toDoTableView;
NSMutableArray *items;
}
- (IBAction)addButton:(id)sender;
@end
#import "AppController.h"
@implementation AppController
//NSMutableArrayの初期化
- (id)init {
[super init];
items = [[NSMutableArray alloc] init];
return self;
}
//ボタンアクションの設定
- (IBAction)addButton:(id)sender {
NSString *string = [newItemField stringValue];
[items addObject:string];
[toDoTableView reloadData];
}
//これ以下はNSTableViewのデータソースメソッド
//データソースの行数を返す
- (int)numberOfRowsInTableView:(NSTableView *)tv {
return [items count];
}
//データソースの中身を返す
- (id)tableView:(NSTableView *)tv
objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row{
NSString *v = [items objectAtIndex:row];
return v;
}
//テーブル内のデータを修正する
- (void)tableView:(NSTableView *)tv
setObjectValue:(id)anObject
forTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex {
[items replaceObjectAtIndex:rowIndex
withObject:anObject];
}
@end
最近iPhoneアプリの作成が目的で、Mac用プログラム言語であるObjective-CやそのフレームワークであるCocoaに興味を持つ方が増えてきたようです。日本語の参考書類も増えてきたんで、自称日曜プログラマーの私には喜ばしいことです。