Faire interagir les vues dans une Tab Bar

alain.lcalain.lc Membre
20:24 modifié dans API UIKit #1
bonjour à  tous,

je repose car j'etait dans la mauvaise catégorie, sorry

je galère depuis hier sur les delegates (encore) dans un projet utilisant le template
"Tab bar", celui-ci contient 4 boutons et je souhaite pouvoir les faires "communiquer"
par exemple que la 1ere fenetre puisse modifier un label dans la seconde, que la 3eme puisse lancer une action sur la 2eme etc ...
j'ai tester un exemple qui à  priori devrait fonctionner (http://knol.google.com/k/usman-ismail/iphone-sdk-tabbars/34oprzanmpe7q/7#) mais lorsque j'applique la methode dans mon projet, cela ne fonctionne pas (aucune erreur pourtant, mais mon label reste vide)

je pense que c'est lié au fait que dans l'exemple le gars créé dynamiquement ces vues alors que moi c'est sous ibuilder ...

si quelqu'un pouvait m'aider ce serait cool

rien ne vaut du concret : http://alain.lc.free.fr/iphone/tabtest.zip

Réponses

  • Philippe49Philippe49 Membre
    20:24 modifié #2
    Dans une application Tab-Bar, tu disposes d'un UITabBarController qui gère un tableau contenant les ≠ UIViewController. C'est l'ancêtre commun de l'arborescence des UIViewControllers. Pour que descendants communiquent, il suffit qu'il passe par cet ancêtre commun.


    UIViewController  :  voir la property tabBarController
    UITabBarController : voir la property viewControllers

  • alain.lcalain.lc Membre
    20:24 modifié #3
    merci philippe de répondre si rapidement, mais si je vient ici c'est que je ne trouve pas/comprend pas
    j'ai chercher hier et une bonne partie de la journée, je m'arrache les cheveux, j'ai deja lu
    la doc (en anglais) et je n'y arrive pas, je bloque sur une connerie c'est sur.
    si quelqu'un avait un exemple ce serait vraiment cool
  • Philippe49Philippe49 Membre
    novembre 2008 modifié #4
    dans 1225992554:

    .. dans un projet utilisant le template "Tab bar", celui-ci contient 4 boutons et je souhaite pouvoir les faires "communiquer" , par exemple que la 1ere fenetre puisse modifier un label dans la seconde,


    La première fenêtre contient par un UIControl et est gérée par un FirstUIViewController .
    D'une manière ou d'une autre ce FirstUIViewController  reçoit le message.
    Il demande alors à  son tabBarController de lui refiler l'adresse du secondUIViewController . Il suffit au  UITabBarController de parcourir le tableau viewControllers pour sélectionner celui dont la classe  (méthode isKindOfClass:) est SecondUIViewController et de transmettre l'information au firstUIViewController.
    Il ne reste plus au firstUIViewController d'envoyer à  secondUIViewController le message adéquat.

    Signalons la possibilité également de définir des IBOutlet, et de connecter dans MainWindow.xib

  • alain.lcalain.lc Membre
    20:24 modifié #5
    oui, j'ai bien compris le principe, c'est la mise en pratique de ce que tu vient de citer que je n'arrive pas à  faire  :'(
    - (IBAction)bouton {<br /> self.tabBarController.????	<br />}
    
    :crackboom:-
  • Philippe49Philippe49 Membre
    20:24 modifié #6
    Certes mais là , il faut revoir les bases
  • alain.lcalain.lc Membre
    20:24 modifié #7
    Iep, c'est pour sa que je suis allez sur la section "Débutants : les bases d'Objective-C & Cocoa"
    je n'ai jamais dit que j'etait expert, c'est pour cela que je vient chercher conseil et aide sur ce forum, n'est-ce pas son but ?
  • Philippe49Philippe49 Membre
    20:24 modifié #8
    dans 1225999548:

    conseil et aide

    Cela a été donné, il te reste à  le faire.
    Si tu as des questions plus précises, où il ne s'agit pas de faire à  ta place, on est disponible.
  • alain.lcalain.lc Membre
    novembre 2008 modifié #9
    Ok, en autre terme si j'ai besoin de rien je viens ici ...
    tu ne m'a rien appris et nullement aidé puisque je le savait deja, je n'ai jamais demander
    à  ce que tu le fasse à  ma place, juste un petit exemple (syntaxe) pour appeler un objet d'une autre UIViewController
    mais bon, je me suis visiblement trompé d'endroit pour poser ce genre de question
    je vais retourner dans la doc me debrouillé, on est jamais mieux servi que par sois meme.

    vivement un vrai forum sur l'objective-C digne de ce nom

    PS: supprimer la section débutant du forum, elle ne sert à  rien

    Edit:
    Franchement philippe, j'ai du mal à  te comprendre, fatigué de ta journée sans doute...
    ton site : http://web.mac.com/philippe.robinet/Le_ranch/Tab_Bar_Application.html
    pourquoi tu donne des exemples aussi complet avec code et tout et tout si sur ce forum tu envoi bouler
    les gens qui demande exactement ce genre d'exemple (concret) comme sur ton site ?
  • Philippe49Philippe49 Membre
    20:24 modifié #10
    dans 1225994874:

    oui, j'ai bien compris le principe, c'est la mise en pratique de ce que tu vient de citer que je n'arrive pas à  faire  :'(
    - (IBAction)bouton {<br /> self.tabBarController.????	<br />}
    
    :crackboom:-


    Dans FirstUIViewController.h
    @class SecondUiViewController;
    @interface ..... {
      IBOutlet SecondUiViewController * secondUiViewController; 
    ......

    Dans FirstUIViewController.m
    #import "FirstUIViewController.h"
    @implementation FirstUIViewController
    - (IBAction)bouton:(id)sender {
        [secondUIViewController faitTelleMethodeAvec: ...... ];
    }

    Dans SecondUIViewController.h
    @interface SecondUIViewController{
    }
    - (void)faitTelleMethodeAvec:....;
    }


    Dans SecondUIViewController.m
    #import "SecondUIViewController.h"
    @implementation SecondUIViewController
    - (void)faitTelleMethodeAvec:....{
      .....
    }

    Connecter l'IBOutlet dans IB
  • alain.lcalain.lc Membre
    20:24 modifié #11
    Merci, sa fonctionne
    par contre j'ai un warning, qui n'empeche pas le fonctionnement mais bon...
    et un symptome qui me semble logique et pour lequel je ne sais pas quoi faire :
    les actions envoyer dans "SecondView" ne fonctionne pas tant que je n'ai pas été au moins 1x dans l'onglet "SecondView"

    le resultat est ici : http://alain.lc.free.fr/iphone/tabtest.zip

    merci encore pour votre aide :)
  • Philippe49Philippe49 Membre
    20:24 modifié #12
    Warning : Il manque #import "SecondViewController.h" dans MainViewController.m

    @++

Connectez-vous ou Inscrivez-vous pour répondre.