Pergunta

Eu estou tentando mostrar uma UIImagePickerController assim que uma das minhas cargas controlador de vista. Eu gostaria de isso sem que o usuário precise pressionar um botão para que eu cancelou o método viewDidLoad como segue:

- (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];
}

Isso compila e corre, no entanto, quando o controlador de vista é carregado o selecionador de imagem não é exibida. Este código fina funciona se eu anexá-lo a um evento de um botão, por exemplo. Alguma idéia?

Graças.

Foi útil?

Solução

Eu tive o mesmo problema, mas resolveu. Tente usar

-(void) awakeFromNib {

}

Ele irá carregar apenas depois de tudo cargas outra pessoa.

Outras dicas

Tente colocar o código no

-(void)viewDidAppear

Isso mesmo é executado a cada vez que a visão é exibida na tela embora (incluindo quando ele aparece depois de descartar a UIImagePicker), assim você pode ter que adicionar um valor BOOL para torná-lo só acontecem pela primeira vez ele mostra, ou quando você quer (ou seja, não depois de dispensar uma visão modal).

Parece que viewDidLoad é muito cedo para uso presentModalViewController: animado :. Eu sugget se bifurcar fora um temporizador one-shot para chamar o método a partir da próxima iteração do loop de execução:

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

adicione o seguinte método:

- (void)onLoadTimer:(id)unused
{
    [self presentModalViewController:imagePickerController animated:YES];
    [imagePickerController release];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top