如何在iPhone上使用委托模式

时间:2010-02-19 05:45:03

标签: iphone delegates

我有一些关于在iPhone上使用委托模式的问题。

这是使用委托模式的代码。这段代码有效。

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'协议

我该怎么办?

添加源代码

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 *)文本方法是测试源。

1 个答案:

答案 0 :(得分:3)

您能告诉我们哪个班级正在创建GoogleDocsViewController吗?检查该类的标题(.h文件)并查看它是否实现了GoogleDocsViewControllerDelegate。

基本上,委托是将从GoogleDocsViewController收听有趣事件的对象,它应该实现所提到的协议,以便“知道”事件被触发时要执行的操作。