Pergunta

Eu sou muito novo para desenvolvimento do iPhone e eu ainda estou recebendo minha cabeça em torno de Objective-C, por isso, tenha comigo:)

Eu estou tentando alterar o texto de um rótulo de dentro um objeto que pertence ao principal controlador de vista. Umm. Eu acho que soa bem.

Para aqueles que estão familiarizados com a classe AQRecorder do SpeakHere exemplo no iPhone Reference Library : -

Eu estou tentando atualizar um rótulo cada vez AQRecorder::MyInputBufferHandler é chamado (ou seja, quando os buffers de entrada foram preenchidos)

Minha primeira abordagem foi a de modificar a classe AQRecorder para conter um UILabel* que eu enviar como um parâmetro para o construtor modificado. Funcionou, mas me senti muito mal. E agora que eu quiser modificar um par de diferentes componentes de interface do usuário que eu estava esperando há uma maneira melhor.

Eu tenho um sentimento que eu estou faltando algo básico. Que ou eu vou exigir um pouco de refatoração.

Foi útil?

Solução

olhar em usar NSNotificationCenter . Ele fornece notificações dissociados, por isso, a classe gravador não precisa saber nada sobre a interface do usuário.

Outras dicas

Além de notificações (como sugerido por Kristopher), que são muito útil se você tiver notificações "globais" com, possivelmente, vários observadores, a abordagem clássica que vem à mente é delegação.

No seu caso, a classe que manipula o evento (AQRecorder?) Poderia definir um protocolo de delegado e ter uma propriedade delegado, enquanto a classe proprietária do UILabel (seu principal controlador de vista?) Poderia implementar este protocolo e atualizar o rótulo em a implementação do protocolo (ou fazer o que necessidades mais a ser feito).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top