Pregunta

Estoy tratando de mostrar una UIImagePickerController tan pronto como uno de mis cargas controlador de vista. Me gustaría esto sin que el usuario tenga que pulsar un botón, así que hizo caso omiso del método viewDidLoad de la siguiente manera:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
    imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePickerController.allowsImageEditing = YES;
    imagePickerController.delegate = self;    
    [self presentModalViewController:imagePickerController animated:YES];
    [imagePickerController release];
}

Esto compila y se ejecuta, sin embargo, cuando el controlador de vista se carga el selector de imagen no se muestra. Este código funciona bien si me ato a un evento de un botón, por ejemplo. ¿Alguna idea?

Gracias.

¿Fue útil?

Solución

Yo tenía el mismo problema, pero lo resolvió. Trate de usar

-(void) awakeFromNib {

}

Se carga justo después de todo carga demás.

Otros consejos

Trate de poner el código en

-(void)viewDidAppear

Que incluso se ejecuta cada vez que la vista aparece en la pantalla, aunque (incluyendo cuando aparece después de descartar la UIImagePicker), así que puede que tenga que añadir un valor BOOL para que sea sólo ocurren la primera vez que se muestra, o cuando quererlo (es decir, no después de despedir una vista modal).

Parece que viewDidLoad es demasiado pronto para usar presentModalViewController: animado :. Me sugget al tenedor de un temporizador de una sola vez para llamar al método a partir del próximo bucle de ejecución de iteración:

[NSTimer
 scheduledTimerWithTimeInterval:0
 target:self
 selector:@selector(onLoadTimer:)
 userInfo:nil
 repeats:NO];

añadir el siguiente método:

- (void)onLoadTimer:(id)unused
{
    [self presentModalViewController:imagePickerController animated:YES];
    [imagePickerController release];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top