Cocoaでウィンドウをプログラムで作成する方法を知りましたが、イベントへの対応方法を理解することはできません。ウィンドウが終了要求またはボタンクリックに反応しません。GUIを作成してCocoaイベントにプログラム的に反応させるにはどうすればよいですか?
私は、次のコントローラを追加しようとしたし、運なしsetDelegate /がsetTargetを使用:
@interface AppController : NSObject {
}
- (IBAction)doSomething:(id)sender;
@end
@implementation AppController
- (IBAction)doSomething:(id)sender;
{
printf("Button clicked!\n");
}
@end
int main(int argc, char **args){
NSRect frame = NSMakeRect(0, 0, 200, 200);
AppController *controller = [[AppController alloc] init];
> [[NSApplication sharedApplication] setDelegate:controller];
NSWindow* window = [[NSWindow alloc] initWithContentRect:frame
styleMask:NSBorderlessWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[window setBackgroundColor:[NSColor blueColor]];
NSButton *button = [ [ NSButton alloc ] initWithFrame: NSMakeRect(30.0, 20.0, 80.0, 50.0) ];
[ button setBezelStyle:NSRoundedBezelStyle];
[ button setTitle: @"Click" ];
> [ button setAction:@selector(doSomething:)];
> [ button setTarget:controller];
[ [ window contentView ] addSubview: button ];
[window makeKeyAndOrderFront:NSApp];
[[NSRunLoop currentRunLoop] run];
return 0;
}
なぜこれを最初にやりたいのですか?一般に、Interface Builderを使用してアプリケーションのヒューマンインタフェースを作成する必要があります。 –
私は別のGUIツールキットのポートを作成しています。 –
@Chris:私がプログラムによるGUI作成を調べる理由の1つは、ファイルからプロパティを持つオブジェクトをいくつか読み込み、コンパイル時に何個あるか、どのように存在するかを知らずにすべてのプロパティを編集可能にする必要があることですそれらのデータ型(float、int、NSString、NSPoint、...)が含まれます。私は空のダミービューを埋める必要があるだけだと思うが、他のUI要素は静的なので、 – LearnCocos2D