setDelegate的语义问题

时间:2013-05-26 21:30:38

标签: ios objective-c cocoa-touch uiwebview

我的代码存在语义问题。我有一个UIWebView,我添加了一条错误消息,所以如果没有互联网连接,则会弹出一个错误。

这是我的.m文件中的UIWebView的编码

- (void)viewDidLoad {
[super viewDidLoad];
NSString *fullURL = @"http://example.com";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[website setDelegate:self];
[website loadRequest:requestObj]; }

错误在此代码上

[website setDelegate:self];

它说这是一个语义问题,错误是将FirstViewController * const_strong发送到不兼容类型id的参数

如果没有互联网连接,这是错误消息的代码

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"error" message:@"error connecting to the internet" delegate:self
cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show]; }

2 个答案:

答案 0 :(得分:1)

您需要指定FirstViewController实现协议。类似的东西:

@interface FirstViewController ()  <UIWebViewDelegate>
@end

编译器当前警告您,您正在设置一个委托,该委托未指定它实现了所需的协议,因此不执行编译检查。

答案 1 :(得分:0)

您的视图控制器应通过在<UIWebViewDelegate>行的末尾添加“@interface”来指定它符合UIWebViewDelegate,或者在@interface行中的.h声明中@interface MyViewController : UIViewController <UIWebViewDelegate>

.m

或者@interface MyViewController () <UIWebViewDelegate> 文件中的私有类扩展(如果有的话):

{{1}}

请参阅使用Objective-C编程指南中的Conforming to Protocols