Domanda

Sono abbastanza nuovo nello sviluppo di iPhone e sto ancora pensando a Objective-C, quindi per favore abbi pazienza :)

Sto provando a cambiare il testo di un'etichetta dall'interno di un oggetto che appartiene al controller della vista principale. Umm. Penso che suona bene.

Per quelli che conoscono la classe AQRecorder dalla Spiega qui un esempio nella Libreria di riferimento di iPhone : -

Sto cercando di aggiornare un'etichetta ogni volta che viene chiamato AQRecorder :: MyInputBufferHandler (ovvero quando i buffer di input sono stati riempiti)

Il mio primo approccio è stato quello di modificare la classe AQRecorder per contenere un UILabel * che invio come parametro al costruttore modificato. Funzionava, ma sembrava molto sbagliato. E ora che voglio modificare un paio di diversi componenti dell'interfaccia utente, speravo che ci fosse un modo migliore.

Ho la sensazione che mi manchi qualcosa di essenziale. Quello o avrò bisogno di un po 'di refactoring.

È stato utile?

Soluzione

Cerca di utilizzare NSNotificationCenter . Fornisce notifiche disaccoppiate, quindi la classe del registratore non dovrà sapere nulla sull'interfaccia utente.

Altri suggerimenti

Oltre alle notifiche (come suggerito da Kristopher), che sono molto utili se hai " global " notifiche con possibilmente più osservatori, l'approccio classico che viene in mente è la delega.

Nel tuo caso, la classe che gestisce l'evento ( AQRecorder ?) potrebbe definire un protocollo delegato e avere una proprietà delegata, mentre la classe proprietaria del UILabel (tuo main view controller?) potrebbe implementare questo protocollo e aggiornare l'etichetta nell'implementazione del protocollo (o fare qualsiasi altra cosa debba essere fatta).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top