我已经在ViewController的viewDidLoad方法中开发了webView。
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
id <UIWebViewDelegate> delegate =[[MyDelegate alloc] init];
webView.delegate = delegate;
NSError *error;
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *htmlContent = [[NSString alloc] initWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:&error];
[webView loadHTMLString:htmlContent baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
[self.view addSubview:webView];
我在MyDelegate类的实例上设置了委托。
在MyDelegate类中:
#import <UIKit/UIKit.h>
@interface MyDelegate : NSObject <UIWebViewDelegate>
@end
#import "MyDelegate.h"
@implementation MyDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
return YES;
}
@end
我的应用在加载时崩溃了。
如果我不加载HTML内容,只是URL(例如'google.com'),也会发生崩溃。
当我注释掉'webView.delegate = delegate;'时,就不会出现崩溃。
我知道我可以在ViewController.h中使用这个:
@interface ViewController : UIViewController<UIWebViewDelegate>
在viewDidLoad中添加如下代码:
webView.delegate = self;
但我需要使用其他类作为代理(而不是ViewController),但是WebView必须位于ViewController中。
我该如何做到这一点? 帮帮我!