2010-02-19 7 views
1

J'ai quelques questions sur l'utilisation de delegate patten sur iPhone.Comment utiliser le modèle délégué sur l'iPhone

Il s'agit d'un code utilisant delegate patten. Ce code fonctionne.

SecondViewController *secondViewController = [[SecondViewController alloc] init]; 
    secondViewController.delegate = self; 
    [self.navigationController pushViewController:secondViewController animated:YES]; 
    [secondViewController release]; 

J'ai écrit un code comme celui-ci. Mais ça ne marche pas. Je pensais que le délégué n'est pas valide.

GoogleDocsViewController *googleDocsView = [[GoogleDocsViewController alloc]initWithNibName:@"GoogleDocsViewController" bundle:nil]; 
    googleDocsViewController.delegate = self; 
    [self.navigationController pushViewController:googleDocsView animated:YES]; 
    [googleDocsView release]; 

Je ne savais pas pourquoi ce code a un avertissement. Attention comme ça.

classe 'RootViewController' ne met pas en œuvre le protocole 'GoogleDocsViewControllerDelegate'

Que puis-je faire?

ADD SOURCE CODE

GoogleViewController.h 

@protocol GoogleDocsViewControllerDelegate; 
@interface GoogleDocsViewController : UIViewController<UITextFieldDelegate> {  
    id<GoogleDocsViewControllerDelegate> delegate; 
} 
@property (nonatomic,assign) id<GoogleDocsViewControllerDelegate> delegate; 

@end 

@protocol GoogleDocsViewControllerDelegate<NSObject>; 

@required 

-(void) googleViewControllerInputDidEnd:(NSString *)text; 

@end 

googleDocsViewController.m

-(void)googleViewControllerInputDidEnd:(NSString *)text{ 
    NSLog(@"delegate"); 
} 

Cette googleViewControllerInputDidEnd: Méthode texte (NSString *) est source de test. Pouvez-vous nous indiquer quelle classe est en train de créer GoogleDocsViewController?

Répondre

3

Vérifiez l'en-tête de la classe (fichier .h) et voyez s'il implémente GoogleDocsViewControllerDelegate. Fondamentalement, le délégué est l'objet qui écoute les événements intéressants de GoogleDocsViewController et il doit implémenter le protocole mentionné afin qu'il "sache" quelles actions effectuer lorsque les événements sont déclenchés.

+0

Merci de poster la source. Puisque la méthode est marquée @required, avez-vous également ajouté la déclaration googleViewControllerInputDidEnd dans votre fichier d'implémentation (.m)? –

Questions connexes