//yan's Diary: 新Macのプログラミング入門 その1 新Macのプログラミング入門 その1 | yan's Diary

2010/02/06

新Macのプログラミング入門 その1

超不人気シリーズの「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に興味を持つ方が増えてきたようです。日本語の参考書類も増えてきたんで、自称日曜プログラマーの私には喜ばしいことです。
 
 

6 件のコメント:

男爵 さんのコメント...

更新のペース早いですねぇ。これも新しいブログの効果でしょうか。
以前のと違って、コメントが新着順に並んで掲載されないのが痛いですね、私の立場からすると。

やん さんのコメント...

コメントサマリーに関しては、こんな感じでええかいな。ただし最大5件までしか表示できなかった。
あとカレンダーを表示させたかったので、やってみました。どうかな?

男爵 さんのコメント...

ほう、コメントサマリーというんですか。
なんで↑のやんさんのコメントは表示されないんですか?
カレンダー いいんじゃないでしょうか。

やん さんのコメント...

コメントサマリーの作成されるのが遅いんやろな。確かに前みたいにリアルタイムで表示が更新されないね。イマイチやな。もうちょい調べてみます。

やん さんのコメント...

これでどうや!

やん さんのコメント...

コメントを書いてから「最近のコメント」欄に反映されるまで、30分くらいかかるみたい。

↑ このページの先頭へ