En un esfuerzo aparentemente interminable para aprender más sobre el desarrollo de iphone, he estado jugando con algunos de los códigos fuente disponibles a través del sitio web de desarrolladores de manzanas. El ejemplo particular con el que estoy trabajando es Core Data Books, encontrado here. DetailViewController y AddViewController se crean programáticamente, porque no hay ningún archivo xib para ellos. Mi pregunta es acerca de agregar programáticamente cosas a una vista sin usar IB. Quiero poner un UISwitch debajo de UITableView que tiene la información detallada sobre un libro en particular en el DetailView. ¿Cómo hago esto? Esto es lo que he probado hasta ahora:Creando un UISwitch programáticamente
En el AddViewController, I fijó la UISwitch:
@interface AddViewController : DetailViewController {
id <AddViewControllerDelegate> delegate;
UISwitch *onoff;
}
@property (nonatomic, assign) id <AddViewControllerDelegate> delegate;
@property (nonatomic, retain) IBOutlet UISwitch *onoff;
también configurar una IBAction:
- (IBAction)flip:(id)sender;
Entonces sintetizarlo en el AddViewController. m archivo, pero no pasa nada. Solo necesito configurar el interruptor y hacerlo para poder controlar lo que hace desde mi IBAction que configuro. Sé que esto es vergonzosamente simple, pero no puedo resolverlo. ¡Por lo que cualquier ayuda se agradece! Gracias
Editar 1
Así que implementa el código como me dirigieron a la viewDidLoad, así:
- (void)viewDidLoad {
[super viewDidLoad];
UISwitch *onoff = [[UISwitch alloc] initWithFrame: CGRectZero];
[onoff addTarget: self action: @selector(flip:) forControlEvents:UIControlEventValueChanged];
// Set the desired frame location of onoff here
[self.view addSubview: onoff];
Y lanza dos advertencias que dicen que la declaración local de cueros 'OnOff' la variable de instancia. Pero a pesar de que hay esas ganancias, el UISwitch aparece bien, pero cuando lo muevo o lo uso, parece que no está funcionando del todo. Para mi acción que tiene este aspecto:
- (IBAction)flip:(id)sender {
if (onoff.on) NSLog(@"On");
else NSLog(@"Off");
}
Cada vez que el interruptor está encendido, la consola debe leer, y cuando su apagado, la consola debe leer fuera. ¿Derecha? Cada vez que lo muevo, simplemente se repite en la consola, apagado. Si está encendido, o si está apagado, solo se muestra apagado. ¿Qué demonios estoy haciendo mal? ¡Por favor ayuda! Gracias
¿Por qué no utilizar IB? Y si no lo está utilizando, ¿por qué las cosas se declaran como IBOutlet e IBAction? – gerry3
Wow. Gran punto De hecho, me encantaría usar IB, pero como mencioné, estoy intentando que esto funcione en una vista que no utiliza IB. ¿Hay alguna manera fácil de agregar un archivo xib a una pantalla que está completando una vista única y mostrando celdas de información? Gracias – Steve