Pais de Visualização de problemas com UIImagePickerControllerSourceTypeCamera

votos
3

Eu tenho um problema estranho com UIImagePickerControllerSourceTypeCamera. Meu aplicativo dá a opção de selecionar uma foto da galeria ou tirar uma foto com a câmera. Se eu escolher a galeria, eu pegar uma foto e retornar ao meu ponto de vista, sem problemas.

No entanto, quando se utiliza UIImagePickerControllerSourceTypeCamera, parece fazer algo estranho com a minha visão quando eu voltar a ele.

Por exemplo, eu tenho um monte de código no método viewDidLoad que move alguns objetos na vista se ele precisa com base em alguns fatores - este código é chamado quando eu sair do UIImagePickerControllerSourceTypeCamera, mas não obtém chamado quando eu sair da galeria.

É este o esperado?

Publicado 24/01/2010 em 19:31
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Eu acho que sua visão está sendo jogados pela didReceiveMemoryWarningcoisa que está sendo desencadeada pelo material câmera uso intensivo de recursos. Você pode forçar o simulador para gerar um aviso de memória sem a câmera para testar esta teoria.

De um modo geral, viewDidLoad precisa ser capaz de lidar com sendo chamado várias vezes. Não é um initmétodo. Ele é chamado novamente se self.viewcomeça o jogo a zero ea vista mais tarde precisa ser recriado. Pode haver um lugar mais apropriado para colocar qualquer código que você tem aí que os problemas está causando, mas os initmétodos são complicadas porque o inicializador designado é ignorada pela carga de ponta.

Quando carregado a partir de um bico, a classe de initWithCoderchama-se em vez, que contorna todo o processo de inicialização porque desarquivamento é assumida para ser sucção em um objecto já inicializada. Portanto reinicializar o objeto pode quebrar coisas, como loadView chamada que essencialmente em conflito com o que um nib contém como é suposto para construir programaticamente o que a ponta já tem nele. Você ainda pode substituir initWithCoder como de costume embora, enquanto você passar através dos argumentos de supercomo você deve, mas então isso não será chamado se você inicializar o objeto com o inicializador designado. Claro, se você precisa se preocupar com que você pode colocar todo o código que você deseja executar, tanto em um método que é chamado de ambos os métodos substituídos.

Respondeu 24/01/2010 em 20:27
fonte usuário

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