UIView - UIViewcontroller comment enchainer les processus
Rvb33
Membre
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
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
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est un cas typique MVC
@protocol ô mon bel ami.
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html
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
Je continue un peu puis abandonne si ça bloque. en tout cas merci de votre aide.
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.. ???
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 !
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.
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
Bon courage
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
}
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.
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
Classiquement dans la méthode viewDidLoad du contrôleur de vue, mais dans Interface Builder c'est tout aussi bien.
genre
Ceci clos la demande encore merci à tous
C'eût été dommage d'abandonner !
Autre petit détail, pense à utiliser les balises de code, c'est plus lisible.
Bon courage dans la suite de ton apprentissage !