UIView - UIViewcontroller comment enchainer les processus

Rvb33Rvb33 Membre
04:20 modifié dans Vos applications #1
Bonjour,

J'utilise une UIView pour pouvoir bénéficier de drawRect.
Tout se passe bien je trace ce dont j'ai besoin.
Mais en fin de tracé à  la fin de touchesEnded, je voudrait déclencher une méthode qui se trouve dans mon UIViewController, pour être plus précis une méthode qui ouvre une autre vue.
Comment procéder?
merci de votre aide

Réponses

  • 04:20 modifié #2
    @protocol ô mon bel ami.
    C'est un cas typique MVC
  • Rvb33Rvb33 Membre
    04:20 modifié #3
    oui mais encore....
  • Rvb33Rvb33 Membre
    04:20 modifié #5
    Merci Idesroziers, mais je ne comprends pas le principe, je dois pas et a la hauteur.
    Tant pis j'aurai préféré un exemple concret parce que là  rien de clair pour un nul comme
    En tout cas merci encore
  • AliGatorAliGator Membre, Modérateur
    04:20 modifié #6
    Sinon j'ai fait un tuto sur le site de pommedev exprès sur les protocoles aussi
  • Rvb33Rvb33 Membre
    04:20 modifié #7
    Monsieur Aligator j'y cours......
  • Rvb33Rvb33 Membre
    04:20 modifié #8
    Non décidément je n'y comprends rien, trop théorique.
    Je continue un peu puis abandonne si ça bloque. en tout cas merci de votre aide.
  • Rvb33Rvb33 Membre
    04:20 modifié #9
    Explication trop éloignées de la demande initiale, dommage
  • 04:20 modifié #10
    dans 1323547943:

    Explication trop éloignées de la demande initiale, dommage


    Bha on va pas te cracher la réponse comme ça non plus.. y'en a marre des gens comme ça.
    Si tu souhaites vraiment devenir un bon développeur OS X / iOS il va sérieusement falloir te remettre en question.. On dirait moi à  16 ans..  ???
  • Rvb33Rvb33 Membre
    04:20 modifié #11
    sympa...
  • AliGatorAliGator Membre, Modérateur
    04:20 modifié #12
    C'est peut-être pas très agréable à  entendre mais je vais un peu dans le sens de ldesroziers sur le coup...
    Si la documentation, des exemples et des tutos ne te suffisent pas et surtout, surtout, si tu abandonnes aussi vite sur des petits problèmes comme ça (le NSArray/addObject d'un côté, la compréhension des @protocol et la comm entre les ViewControllers de l'autre...) alors qu'en plus c'est pas non plus des problèmes pointus mais des choses qui sont utiles dans tout programme Cocoa/iOS et que tu retrouveras partout, ce n'est pas comme cela que tu vas progresser.

    Je dis ça pour toi hein, n'y vois aucune attaque c'est juste que la programmation, comme toute autre matière, demande un peu de travail et beaucoup de persévérance, donc si tu abandonnes aussi vite comme tu le fais sur le NSArray ou ici sur les communications entre UIViewControllers, c'est peut-être que l'apprentissage de la programmation et la persévérance que cela demande n'est pas fait pour toi...

    Tu ne trouveras jamais un truc tout fait pile poil pour tes besoins, ni de personne qui va coder ton programme à  ta place. Cela demande un petit effort d'adaptation, de comprendre les principes de base (protocoles, ViewControllers) de lire les sujets dessus mais surtout de savoir adapter ce que tu lis à  tes propres besoins, car ça ne va pas se faire tout seul ni t'arriver tout cru dans la bouche.

    On peut te filer des liens vers des docs, des tutos, t'indiquer mon tuto en français ou même que tu me remontes si tu vois des choses mal expliquées dedans, mais tu ne trouveras jamais (et ça dans un peu tous les domaines) le code pile que tu veux tout fait et le travail mâché, faut bien un peu s'atteler à  la tâche ne serait-ce qu'un minimum : le propre d'un bon ingénieur et d'un bon programmeur n'est pas de tout savoir dans son domaine, loin de là , mais de savoir s'adapter, sans ça on irait vraiment pas loin !
  • Rvb33Rvb33 Membre
    04:20 modifié #13
    Voila qui est beaucoup mieux dit et qui donne envie de continuer et se casser la tête.
    Certains sont plus pédagogues que d'autres
    Merci Aligator j'y retourne et te tiens au courant des mes avancées.
    Encore merci et bravo pur ton boulot.
  • Rvb33Rvb33 Membre
    04:20 modifié #14
    je persiste mais est-ce-que je peux utiliser les protocoles entre une classe UIView et une classe UIViewController car tous les exemples trouvés donnent des exemples entre des view controller.
    Je l'ai fait entre view et viewcontroller et rien ne se passe, ça ne plante pas mais pas de réaction.
    J'ai suivi un peu la méthode utilisée pour les flipsideview.
    Suis je sur la bonne voie?
    merci
  • Alf1996Alf1996 Membre
    04:20 modifié #15
    Comme te l'ont dit Ali et Louka, tu ne trouveras pas de code tout fait... Ce forum est super, j'en ai profité à  de nombreuses reprises, et les explications qui m'ont été faites ont toujours été profitables. Mais si tu montres ce que tu as fait, tu trouveras probablement quelqu'un qui t'aideras à  l'améliorer, alors un conseil, montre ton code, tu auras plus de chance d'être aidé. C'est trop facile de dire "j'y arrive pas", et d'attendre la réponse devant son écran, alors que si on voit que tu as écrit quelques lignes de code, on pourra plus facilement te répondre, d'autant que ce qui te manque est peut-être un tout petit rien !
    Bon courage  ;)
  • Rvb33Rvb33 Membre
    04:20 modifié #16
    Voila donc ce que j'ai tenté:
    Pas de plantage mais rien ne se passe, c'est à  dire que je n'arrive pas à  la méthode traceDidFinish.



    Une classe viewController

    le .h


    @interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, FashionViewDelegate> {

    Le .m[/color]

    - (void)traceDidFinish:(FashionView*)controller{
       
      .... action
    }



    une classe view

    le .h



    #import <UIKit/UIKit.h>
    @protocol FashionViewDelegate;

    @interface FashionView :  UIView
    {
        id <FashionViewDelegate> delegate;
        CGPoint fromPoint;
        CGPoint toPoint;
        UIColor* currentColor;
    }

    @property (nonatomic, assign) id <FashionViewDelegate> delegate;

    @property CGPoint fromPoint;
    @property CGPoint toPoint;

    - (void)traceNumero:(int) leX : (int) leY ;

    @end
     
    @protocol FashionViewDelegate
    - (void)traceDidFinish:(FashionView*)controller ;

    @end



    Le .m

    ...
    @synthesize delegate;
    ...


    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch* touch = [touches anyObject];
        toPoint=[touch locationInView:self];
        [self setNeedsDisplay];
     
        [self.delegate traceDidFinish:self];  // A la fin du tracé je voudrai me connecter à  cette méthode placée dans la classe view controller

    }

  • jpimbertjpimbert Membre
    04:20 modifié #17
    Le principe me semble correct.

    As-tu bien défini la valeur de la propriété delegate de ta vue quelque part ?
    Une autre possibilité est de définir cette propriété comme un outlet et de définir sa valeur avec Interface Builder.
  • Rvb33Rvb33 Membre
    04:20 modifié #18
    Merci M. Imbert tout est ok, j'ai utilisé la seconde méthode Outlet et IB et ca marche parfaitement.

    Par contre comment définir la valeur de la propriété delegate (votre première ligne)?

    En tout cas merci à  tous de votre patience conseils et aide.
    à  bientôt :)
  • jpimbertjpimbert Membre
    04:20 modifié #19
    dans 1323601384:

    Par contre comment définir la valeur de la propriété delegate (votre première ligne)?

    Classiquement dans la méthode viewDidLoad du contrôleur de vue, mais dans Interface Builder c'est tout aussi bien.
    genre
    self.view.delegate = self;
    
  • Rvb33Rvb33 Membre
    04:20 modifié #20
    Compris Merci.
    Ceci clos la demande encore merci à  tous <3
  • Alf1996Alf1996 Membre
    04:20 modifié #21
    CQFD ...
    C'eût été dommage d'abandonner !  :D
    Autre petit détail, pense à  utiliser les balises de code, c'est plus lisible.
    Bon courage dans la suite de ton apprentissage !  ;)
Connectez-vous ou Inscrivez-vous pour répondre.