Question

Je suis assez nouveau dans le domaine du développement pour iPhone et je suis encore en train de penser à Objective-C.

J'essaie de modifier le texte d'une étiquette de l'intérieur d'un objet appartenant au contrôleur de vue principal. Umm. Je pense que cela semble juste.

Pour ceux d'entre vous qui connaissent la classe AQRecorder de Exemple SpeakHere dans la bibliothèque de référence de l'iPhone : -

J'essaie de mettre à jour une étiquette chaque fois que est appelé (AQRecorder :: MyInputBufferHandler ) (c'est-à-dire lorsque les tampons d'entrée ont été remplis)

Ma première approche consistait à modifier la classe AQRecorder afin qu'elle contienne un UILabel * que j'envoie en tant que paramètre au constructeur modifié. Cela a fonctionné, mais je me sentais très mal. Et maintenant que je veux modifier quelques composants de l'interface utilisateur, j'espérais qu'il existe un meilleur moyen.

J'ai le sentiment qu'il me manque quelque chose de fondamental. Cela ou je vais demander un peu de refactoring.

Était-ce utile?

La solution

Pensez à utiliser NSNotificationCenter . Il fournit des notifications découplées, de sorte que la classe d’enregistreur n’aura pas besoin de savoir quoi que ce soit sur l’UI.

Autres conseils

Outre les notifications (comme suggéré par Kristopher), qui sont très pratiques si vous avez " global " notifications avec éventuellement plusieurs observateurs, l’approche classique qui nous vient à l’esprit est la délégation.

Dans votre cas, la classe qui gère l'événement ( AQRecorder ?) peut définir un protocole de délégué et posséder une propriété de délégué, tandis que la classe possédant le UILabel (votre contrôleur de vue principale?) pourrait implémenter ce protocole et mettre à jour l'étiquette dans l'implémentation du protocole (ou faire tout ce qui reste à faire).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top