我有一些关于在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 *)文本方法是测试源。
答案 0 :(得分:3)
您能告诉我们哪个班级正在创建GoogleDocsViewController吗?检查该类的标题(.h文件)并查看它是否实现了GoogleDocsViewControllerDelegate。
基本上,委托是将从GoogleDocsViewController收听有趣事件的对象,它应该实现所提到的协议,以便“知道”事件被触发时要执行的操作。