Application multi-vue
yass_1988
Membre
Bonjour à tous,
je souhaiterais créer une application basé sur le concept multi-vue. Dans un premier temps, au lancement de mon application, une vue (vue 1) s'affiche, le temps d'un traitement.
En fonction du résultat de mon traitement, mon application peut être amené à afficher intuitivement la vue 2 ou la vue 3.
Comment faire? J'ai déjà fait une application (Basique) multi-vu, mais qui passer d'une vue à l'autre, grâce à des round rect button (Pas besoin de modifier le code pour cela).
Voila si quelqu'un à une idée SVP?
je souhaiterais créer une application basé sur le concept multi-vue. Dans un premier temps, au lancement de mon application, une vue (vue 1) s'affiche, le temps d'un traitement.
En fonction du résultat de mon traitement, mon application peut être amené à afficher intuitivement la vue 2 ou la vue 3.
Comment faire? J'ai déjà fait une application (Basique) multi-vu, mais qui passer d'une vue à l'autre, grâce à des round rect button (Pas besoin de modifier le code pour cela).
Voila si quelqu'un à une idée SVP?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pour faire simple, il faut que tu sois notifié par la FIN de ce traitement.
Ensuite c'est le même principe que tes exemples précédents avec des boutons. (pushViewController, presentModalViewController, addSubview...)
Sinon, j'ai pas très bien compris ton principe (Désolé je débute)
Des idées, un exemple ?
Après pour passer à une vue suivante, tu as plusieurs manière de faire, mais je pense que la meilleure chose à faire est d'encapsuler ton premier contrôleur dans un UINavigationController et d'utiliser pushViewController.
(Mais je ne suis pas sûr du tout de ce que j'avance...)
Et du coup après, comme faire les lien entre les différente vue, sans utiliser de bouton ? et au niveau du code comment faire ?
J'aimerais bien y arriver, car c'est que le début de mon projet et le reste, reste de mon niveau pour le moment.
Maintenant si vraiment cette distinction se fait au lancement de l'application, tu peux lancer un contrôleur à la place d'un autre en settant le rootViewController de ta window principale dans ton AppDelegate (- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions)
donc résumons, je crée un projet basé sur le model single view application, dans mon storyboard je glisse un objet Navigationcontroller, je crée un lien (clic droit, ctrl) sur mon vue déjà existante(vue1) et mon Navigation Contrôleur,
je rajoute un autre objet viewController (vue 2) et je fais pareil, du coup je doit créer une autre classe viewController de type UIViewController?
Après dans le contrôleur de ma première vue, je défini la méthode viewDidAppear comme tu l'as spécifié ?
Je suis un peu perdu
Quand tu parles de vues tu veux dire view controllers ? Quelles sont les scènes de ton storyboard ?
Voila pour le moment ce que je souhaiterais faire.
vue1 = 1 view controller dans ton storyboard
vue2 = 1 autre view controller dans ton storyboard
Dans storyboard il te faut attribuer un identifiant unique pour chacun des view controllers (champ identifier).
Il est entendu que chaque view controller correspond à une sous-classe de ton choix.
Pour appeler vue1 ou vue2 tu dois alors créer une instance du controller qui te convient avec la méthode instantiateViewControllerWithIdentifier: de la classe UIStoryboard en fournissant l'identifiant qui va bien.
Ensuite tu "push" cette instance.
Je rajoute du coup dans mon MainStoryboard_iPhone.storyboard, 2 objets View Controller (vue1 et vue2), je leur attribu à chacun un identifiant unique (Au passage ou trouver ce champ Identifier ? dans mon inspector ?
Après tout cela, si je t'ai bien compris, je définis deux classes (.h et .m) "identifiantvue1ViewController.h et .m"+ "identifiantvue2ViewController.h et .m" et qui hériteront toute les deux de mon ViewController qui correspond à ma vue0.
Bon déjà avant d'attaquer d'instancer et de pusher, suis-je bon dans mon raisonnement ??
Jusqu'ici tout va bien.
La zone qui permet de définir l'identifiant se trouve dans l'inspecteur d'attributs.
Non, sauf si j'ai mal compris ce que tu voulais faire.
Quand tu ajoutes un UIViewController dans ton stoyboard, tu ne peux pas faire grand chose avec n'est-ce pas ? Il faut donc que tu associe ce controller à une classe que tu as créé et qui elle-même hérite de UIViewController. Une fois que tu as créé cette classe (IdentifiantVue1ViewController pour reprendre ton exemple) tu indique dans storyboard, pour le view controller en question, qu'il est associé à ta classe : voir la partie Custom Class de l'inspecteur d'identité. Ainsi ce view controller n'hérite plus directement de UIViewController mais de IdentifiantVue1ViewController.
Donc pour la suite du coup, je dois créer une instance pour chaque contrôler que je viens de créer et putsch ces instances en fonction de mes condition?
Du coup cette partie se réalise ou et dans quel classe ?
Est ce dans viewDidLoad du ViewController.m de ma vue0 ?
Et quand tu dis créer une instance du contrôler, tu veux dire créer un objet de type IdentifiantVue1ViewController ? Par exemple
C'est comme ça pour les instances?
UIViewController *form = /color][color=#b41ca4]self[/color][color=#000000].[/color][color=#7134aa]storyboard[/color][color=#000000] [/color]instantiateViewControllerWithIdentifier[color=#000000]:[/color][color=#c72c25]@"Formulaire"[/color][color=#000000;
UIViewController *appli = /color][color=#B41CA4]self[/color][color=#000000].[/color][color=#7134AA]storyboard[/color][color=#000000] [/color][color="#401082"]instantiateViewControllerWithIdentifier[/color][color=#000000]:[/color][color=#C72C25]@"App"[/color][color=#000000;
Pas tout à fait, ça serait plutôt :
IdentifiantVue1ViewController *vue1ViewController = /color][color=#B41CA4]self[/color][color=#000000].[/color][color=#7134AA]storyboard[/color][color=#000000] [/color]instantiateViewControllerWithIdentifier[color=#000000]:[/color][color=#C72C25]@"Formulaire"[/color][color=#000000;
IdentifiantVue2ViewController *vue2ViewController = /color][color=#B41CA4]self[/color][color=#000000].[/color][color=#7134AA]storyboard[/color][color=#000000] [/color][color=#401082]instantiateViewControllerWithIdentifier[/color][color=#000000]:[/color][color=#C72C25]@"App"[/color][color=#000000;
J'attire ton attention sur le scénario de ton application. Que fait réellement vue0 ? Si c'est juste un controller qui affiche un message d'attente il n'est peut-être pas utile. Ne te semble-t-il pas plus judicieux de réaliser ton traitement dans ton app. delegate dès le lancement de ton application plutôt que d'utiliser un view controller dédié ?
Quel serait pour toi la meilleur solution (type du model du projet, gestions des vues, ... )?
Merci pour ton aide en tout cas.