2010-02-19 2 views
1

У меня есть некоторые вопросы об использовании делегата patten на iPhone.Как использовать шаблон делегата на iPhone

Это код с использованием делегата patten. Этот код работает.

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

Я написал код следующим образом. Но это не сработает. Я думал, что делегат недействителен.

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

Я не знал, почему этот код имеет предупреждение. Предупреждение.

Класс 'RootViewController' не реализует протокол '' GoogleDocsViewControllerDelegate

Что я могу сделать?

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"); 
} 

Это googleViewControllerInputDidEnd: (NSString *) Метод текст тестового источника.

ответ

3

Можете ли вы сказать нам, какой класс создает GoogleDocsViewController? Проверьте заголовок класса (файл .h) и посмотрите, реализует ли он GoogleDocsViewControllerDelegate.

В основном делегат - это объект, который будет прослушивать интересные события из GoogleDocsViewController и должен реализовать упомянутый протокол, чтобы он «знал», какие действия выполнять при запуске событий.

+0

Благодарим за отправку источника. Поскольку метод отмечен как @required, добавили ли вы также объявление googleViewControllerInputDidEnd в ваш файл реализации (.m)? –

Смежные вопросы