Frage

Ich bin ziemlich neu für iPhone Entwicklung und ich meinen Kopf noch um Objective-C bekommen, so tragen Sie bitte mit mir:)

Ich versuche, den Text eines Etiketts zu ändern aus dem Inneren eines Objekts, das in die Hauptansicht-Controller gehört. Umm. Ich denke, das klingt richtig.

Für die von Ihnen vertraut mit der AQRecorder Klasse aus dem SpeakHere Beispiel auf dem iPhone Reference Library : -

Ich versuche, ein Etikett jedes Mal AQRecorder::MyInputBufferHandler zu aktualisieren aufgerufen wird (das heißt, wenn die Eingangspuffer gefüllt wurden)

Mein erster Ansatz war die AQRecorder Klasse zu ändern, um eine UILabel* zu enthalten, die ich als Parameter an den modifizierten Konstruktor senden. Es funktionierte, aber es fühlte sich sehr falsch. Und jetzt, wo ich ein paar verschiedene UI-Komponenten ändern, möchte ich hoffte, es gibt einen besseren Weg.

Ich habe das Gefühl, dass ich etwas Grundsätzliches bin fehlt. Das oder ich werde ein wenig Refactoring erfordern.

War es hilfreich?

Lösung

Schauen Sie in mit NSNotificationCenter . Es bietet entkoppelten Benachrichtigungen, so dass die Recorder-Klasse muss nichts über die Benutzeroberfläche kennen.

Andere Tipps

Neben Meldungen (wie von Kristopher vorgeschlagen), was sehr praktisch sind, wenn Sie „global“ Meldungen mit möglicherweise mehreren Beobachtern haben, der klassische Ansatz, der in den Sinn kommt, ist eine Delegation.

In Ihrem Fall die Klasse, die das Ereignis (AQRecorder?) Behandelt könnte einen Delegaten Protokoll definieren und einen Delegaten Eigenschaft hat, während die Klasse die UILabel besitzt (Haupt-View-Controller?) Könnte dieses Protokoll implementieren und das Etikett aktualisieren in die Protokollimplementierung (oder tun, was sonst getan werden muss).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top