Cocoaプログラミング第3版 第6章 チャレンジ:デリゲートを作成する
こいつは苦労した。
すぐに抜けてしまいそうなので、やったことをメモする。
新規にプロジェクトを作成するのが面倒なので、SpeakLineを使用した。
APPControllerにプロトコルの追加。ついでに、windowのアウトレットも追加している(IBOutlet NSWindow)
@interface AppController : NSObject <NSSpeechSynthesizerDelegate, NSWindowDelegate> { IBOutlet NSTextField *textField; NSSpeechSynthesizer *speechSynth; IBOutlet NSButton *startButton; IBOutlet NSButton *stopButton; IBOutlet NSTableView *tableView; NSArray *voiceList; IBOutlet NSWindow *window; } - (IBAction)sayIt:(id)sender; - (IBAction)stopIt:(id)sender; @end
デリゲート先のメソッドも追加。これは実装クラス(AppController.m)に追加した。
- (NSSize) windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize { NSSize mySize = frameSize; mySize.height = mySize.width / 2; NSLog(@"mySize is %f wide and %f tall", mySize.width, mySize.height); return mySize; }
追加したメソッドが呼ばれるように、明示的にsetDelegateも追加した。
- (id)init { [super init]; NSLog(@"init"); speechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:nil]; [speechSynth setDelegate:self]; [window setDelegate:self]; voiceList = [[NSSpeechSynthesizer availableVoices] retain]; return self; }
接続をおこなった
InterfaceBuilderで、NSWindowのアウトレット(window)から表示するウィンドウに紐付け
ウィンドウのWindow ConnectionsのOutlets->delegateにApp controllerを設定
ここまでやって、初めてデリゲートができた。
ウィンドウサイズが縦横が連動して変更された。
- 作者: Aaron Hillegass,アーロンヒレガス,村上雅章
- 出版社/メーカー: ピアソン桐原
- 発売日: 2009/11/01
- メディア: 単行本
- 購入: 4人 クリック: 110回
- この商品を含むブログ (16件) を見る