2010-07-14 4 views
0

Je suis novice en matière de développement de l'iPhone et de l'objectif c, mais j'espère que certaines personnes plus intelligentes que moi pourront donner un coup de main. Voici mon problème:Passer des objets non statiques entre les contrôleurs de vue

J'ai une application basée sur la vue avec environ 7 contrôleurs de vue différents. L'utilisateur navigue via une barre d'onglets inférieure. J'ai les utilisateurs en entrant des données dans le premier contrôleur de vue à un objet nommé "copies". J'ai besoin d'obtenir la valeur des copies à un autre contrôleur afin qu'il puisse être utilisé pour les calculs. Cela doit également être fait pour de nombreux objets dans les applications d'autres contrôleurs.

Exemple:

utilisateur entre la valeur Copies dans le contrôleur 1er vue.
L'utilisateur entre la valeur de prix dans le contrôleur 6ème vue.

contrôleur 7 vue calcule des copies prix x = grand total

Dans mes recherches, je travaillais sur la méthode singleton, mais qui semble limitée aux données statiques.

Quelle est la meilleure façon de s'assurer qu'un autre contrôleur de vue peut accéder à un objet que l'utilisateur a rempli? J'essaie d'éviter d'utiliser une route SQLite actuellement. Je veux m'en tenir à quelque chose de basique et progresser dans la complexité. Est-ce que quelqu'un a un code d'échantillon que je peux examiner? Cela aide vraiment de voir comment les autres ont abordé cela auparavant.

Merci d'avance!

Répondre

0

Si je vous ai bien compris, il y a une valeur copies et une valeur price dans l'application entière. Si tel est le cas ...

Il y a plusieurs façons de le faire. Méthode la plus simple (peut-être): vous pouvez créer un objet Singleton d'une classe que vous définissez comme ayant copies et price comme propriétés. Singleton dans Objective-C est here, et vous définiriez vos propriétés dans la classe Singleton. Ensuite, vous appelez simplement son instance partagée et utilisez les valeurs sur cela. Donc, votre code ressemblerait à ceci:

[ThatCrazySingleton sharedInstance].copies = 5; 

pour l'écriture.

J'espère que c'est ce que vous cherchez. Si vous ne voulez pas utiliser un Singleton, un des UIViewControllers devrait envoyer un message aux autres avec les copies et les valeurs de prix (heureusement enveloppé ["encapsulé"] dans un objet) . Cela signifie que vous devez obtenir une référence aux autres contrôleurs View, ce que vous pouvez toujours faire en parcourant la hiérarchie.

+0

Merci pour la réponse rapide. Oui, il y a juste un objet commun de "copies", mais la valeur est une entrée utilisateur. Donc, je ne pouvais pas le coder en dur pour dire "5". Il semble que la messagerie soit la solution. Avez-vous des références/exemples de code que je pourrais regarder pour en savoir plus? – user390834

+0

Ce n'est pas un problème que la valeur est entrée par l'utilisateur. Vous le définiriez, disons, une touche d'un bouton (de sorte que le pourrait être '[ThatCrazySingleton sharedInstance] .copies = myTextField.text;') le TextField serait connecté à un IBOutlet. Mais vous devriez probablement revenir en arrière et faire quelques tutoriels de base, et la plupart de ceci pourrait avoir du sens. –

+0

Voici le problème que je ne peux pas franchir alors. Ceci est la classe où j'ai défini le singleton MyManager.h MyManager.m Ceci est la classe où l'utilisateur entre les « copies » UITextView SixthViewController.h SixthViewController.m C'est là que je besoin de la valeur des copies pour montrer. SeventhViewController.h SeventhViewController.m Donc, je devrais créer un bouton sur # 6 pour définir une valeur dans MyManager. Cela n'a pas fonctionné pour moi. Si vous pouvez élaborer sur les tutoriels dont vous parlez qui peuvent aider. – user390834

Questions connexes