-1

Je ne suis pas familier avec les patterns de POO et de design, mais j'ai déjà implémenté le pattern Singleton pour passer des tableaux statiques et des objets string entre différents ViewControllers. Je me demandais s'il y avait un moyen facile pour tous mes ViewControllers d'écouter un geste ou un événement, puis d'exécuter du code une fois que le geste/l'événement se produisait. Je pensais utiliser l'objet UIGestureRecognizer ou la méthode motionBegan de la classe UIResponder.Question sur les singletons dans Cocoa Touch

J'ai déjà obtenu ce travail en faisant une nouvelle classe UIWindow, en introduisant le code là-dedans, et en changeant la classe de MainWindow.xib à ma classe personnalisée. Cela fonctionne, et c'est une bonne solution, mais je me demande toujours s'il existe un moyen de mettre en œuvre cette solution non-IB (par exemple, singletons)

Merci d'avance pour vos conseils.

Un exemple de code est grandement apprécié!

Répondre

1

Vous avez sous-classé UIWindow? C'est très rare. Lisez à propos de l'objet délégué UIApplication et du modèle de délégué en général. C'est essentiellement le singleton principal de votre application dans Cocoa.

Si vous ne voulez pas passer autour, vous pouvez toujours récupérer le délégué de l'application en appelant

[[UIApplication sharedApplication] delegate] 
+0

vous ne voulez certainement pas être sous-classe 'UIWindow' - ou même en utilisant beaucoup comme un débutant, définir le contrôleur de racine pour la fenêtre et être fait avec elle – bshirley

+0

Je vais regarder dans ce - Je pense que Je veux faire est impossible, en plus de sous-classer UIWindow, ou tout simplement renoncer à la mise en œuvre de cette fonctionnalité. Merci! – ArtSabintsev

+0

Une autre pensée: vous devriez lire sur UIResponder et la chaîne de répondeur: [cette question] (http://stackoverflow.com/questions/3356863/how-do-i-add-the-uiapplicationdelegate-to-the-end-of la chaîne des uiresponder) pourrait être une approche utile. – benzado

0

Si vous voulez beaucoup d'objets non connectés/contrôleurs pour être informé d'un événement unique, vous pouvez déclenchez-le comme bon vous semble (cible/action d'un ou de plusieurs contrôles ou d'un ou plusieurs gestes).

Vous voudrez peut-être regarder dans NSNotificationCenter et NSNotification, vous pourriez avoir plusieurs objets listés pour la notification de l'événement/changement.

+0

Est-ce que cela peut être fait sans ajouter trop de code à l'application existante? J'ai écrit un bug-reporter qui est déclenché sur un événement shake, que j'ai stocké dans un objet UIWindow sous-classé. Tout ce que je fais maintenant est de faire une connexion dans Interface Builder pour accéder à cette nouvelle fenêtre et le code shake-event est disponible. Je l'ai fait de cette façon afin que je puisse revenir le code à un mode non-débogage sans trop d'effort (changer la connexion à UIWindow). – ArtSabintsev