2009-07-31 11 views
30

Estoy aprendiendo cómo desarrollarme en el iPhone, compré un libro llamado Beginning iPhone 3 development Explorando el SDK. Después de que mordí, decidí abandonar Interface Builder. Todavía diseño todas mis vistas en IB, pero escribo todo en código y solo uso el archivo de punta para obtener los marcos de los controles.iPhone Dev - Crear UIButton Manualmente

Así que ahora necesito hacer un UIButton, y la documentación es diferente de los otros controles. Intenté usar initWithFrame:, y este es el otro método buttonWithType: que supongo que se libera automáticamente, pero de todos modos no pude conseguir que aparezca un botón en la pantalla. ¿Podría alguien escribir un código que cree localmente un botón con un título que pueda cambiar y que luego pueda agregar a mi subvista y versión de mi vista para que pueda ver cómo se hace?

Respuesta

83

me gustaría probar algo como esto:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    myButton.frame = CGRectMake(20, 20, 200, 44); // position in the parent view and set the size of the button 
    [myButton setTitle:@"Click Me!" forState:UIControlStateNormal]; 
    // add targets and actions 
    [myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    // add to a view 
    [superView addSubview:myButton]; 

responsabilidad: Simplemente tecleando esto aquí. No tengo acceso a mi Mac en este momento, así que no puedo probarlo.

P.S. ¿Alguna razón en particular para no usar Interface Builder? Sólo curioso.

+1

Suponiendo que el selector 'buttonClicked:' existe, esto es perfectamente válido y una buena manera de hacerlo. +1 – Tim

+7

No me gusta IB porque es como una gran caja negra y no puedo ver lo que está pasando y simplemente complica las cosas ... Lo único que creo que es útil es el diseño de la interfaz. ¿Es esto myButton autoreleased? También funcionaría si lo hiciera UIButton * myButton = [[UIButton alloc] initWithFrame: ...]; ... pero ¿cómo podría configurar el botón de solo lectura tipo ... – mk12

+0

y no podría hacer myButton.titleLabel.text = @ "¡Haga clic en mí!" en lugar de setTitle forState? – mk12

Cuestiones relacionadas