Como lançar iPhone Câmera no viewDidLoad?

votos
4

Eu não posso parecer para lançar a câmera ao carregar meu ponto de vista. Eu acabar fazendo com que o usuário tem que encontrar e pressionar um botão na tela apenas para carregar a câmera (redundante). Como posso fazer isso? Código segue:

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {

    self.imgPicker = [[UIImagePickerController alloc] init];
    self.imgPicker.allowsImageEditing = NO;
    self.imgPicker.delegate = self;
    self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;

    [super viewDidLoad];

    [self presentModalViewController:self.imgPicker animated:YES];

}

UPDATE:
colocando o código acima na -viewDidAppear: (BOOL) animado permitiu a câmera para ser lançado, mas o app caiu logo em seguida, com a última sendo rotina [UIWindowController transitionViewDidComplete: fromView: toview]; (como citado por depurador)

Publicado 31/08/2009 em 05:34
fonte usuário
Em outras línguas...                            


2 respostas

votos
4

Você deve fazê-lo em viewWillAppear :, ou viewDidAppear: se o primeiro não funcionar. tentar fazê-lo em viewDidLoad não vai funcionar porque que é chamada após a exibição é criada pela primeira vez, ea vista não é um subexibição de qualquer outra coisa nesse momento. Tanto quanto eu entendo, a fim de chamar presentModalViewController na auto, a visão deve, em algum nível ser exibido no UIWindow.

Uma outra coisa que eu só notei; seu código de vazamentos de memória, dependendo de como você declarar sua propriedade imgPicker. se ele é declarado com reter em vez de atribuir, em seguida, a menos que você liberá-lo explicitamente duas vezes em algum lugar que picker sempre vai existir na memória. Você deve autorelease o objeto init'd como você atribuí-lo à propriedade nesse caso.

Respondeu 31/08/2009 em 05:59
fonte usuário

votos
0

Parece que ele não fazê-lo quando você colocar a chamada para apresentar vista modal tendo em vista fez carga. Você pode tentar ter um segundo temporizador 2 após a chamada para [super viewDidLoad] que empurra a visão selecionador ou algo parecido.

Respondeu 31/08/2009 em 05:47
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more