2008-12-08 18 views
15

De acuerdo con Cocoa Programming para Mac OS X, 3ª edición, en la página 245 (capítulo 17), generalmente creará vistas en Interface Builder. Sin embargo, es posible crearlos en el código, al estilo de:Creación mediante programación de controles en Cocoa

NSView *superview = [window contentView]; 
NSRect frame = NSMakeRect(10, 10, 200, 100); 
NSButton *button = [[NSButton alloc] initWithFrame:frame]; 
[button setTitle:@"Click me!"]; 
[superview addSubview:button]; 
[button release]; 

Eso es todo muy bien, pero ¿cómo iba a cable hasta dichas salidas de control para las acciones en el código? (En .NET, esto es algo fácil, agrega un delegado ... Espero que sea igualmente fácil en Cocoa/Obj-C.)

Respuesta

25

Puedes conectarlos usando una asignación simple. Para seguir con el código de arriba:

[button setTarget: self]; 
[button setAction: @selector(myButtonWasHit:)]; 
+2

Hermosa, gracias! Eso es realmente más fácil que en .NET. –

11

Y si se desea orientar el primer nivel de respuesta en lugar de un objeto en particular:

[button setTarget:nil]; 
[button setAction:@selector(myAction:)]; 
1

Swift:

button.target = self 
button.action = "myAction:" 

Y, por supuesto añadir miAccion funcionar a uno mismo:

func myAction(sender: NSButton) { 
    println("click!") 
} 
Cuestiones relacionadas