在viewDidLoad
,我正在使用NSURLRequest
和NSURLConnection
:
NSURLRequest *site_request =
[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
NSURLConnection *site_connection =
[[NSURLConnection alloc] initWithRequest:site_request delegate:self];
然后我用
-(void)connection:(NSURLConnection *)site_connection didReceiveData:(NSData *)data
{
site_response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
我在site_response
中拥有完整的HTML。
我想创建一个不可见的UIWebView
,它将从NSURLRequest
“打开”页面,以便使用JavaScript获取这样的内容:
NSString *myText = [my_webView stringByEvaluatingJavaScriptFromString:
@"document.documentElement......"];
在我的.h我有:
UIWebView *my_webview;
@property (nonatomic, retain) UIWebView *my_webview;
在我的.m中我有:
@synthesize torrents_webview;
viewDidLoad
之后我的NSURLRequest
[my_webview loadRequest:site_request];
我用
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//an alertview here
}
以确保它有效。但没有任何反应。它没有提供警报视图。
我做错了什么?
答案 0 :(得分:0)
webViewDidFinishLoad:是UIWebView委托的一种方法。您没有在您显示的代码中的任何位置设置委托。
@interface YourClass : UIViewController <UIWebViewDelegate>
...
- (void)loadView
{
self.webView.delegate = self;
}
...
- (void)dealloc
{
self.webView.delegate = nil;
}
此外,如果您使用NSURLRequest,您将再次获取该页面。但是没有必要使用NSURLConnection,只需直接使用NSURLRequest加载UIWebVIew。
或者,如果必须使用NSURLConnection,则在文件下载后将其保存到磁盘并使用LoadHTMLString加载内容。
答案 1 :(得分:0)
ViewController.h
@interface TopTorrents_ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource,UIWebViewDelegate>
{
UIWebView *torrents_webview;
}
@property (nonatomic, retain) UIWebView *torrents_webview;
ViewController.m
@synthesize torrents_webview;
- (void)viewDidLoad
{
torrents_webview.delegate = self;
NSURLRequest *site_request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.gr/"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0];
[torrents_webview loadRequest:site_request];
[super viewDidLoad];
}
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *myText = [torrents_webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0]"];
UIAlertView *my_alert = [[UIAlertView alloc] initWithTitle:@"mytitle" message:myText delegate:nil cancelButtonTitle:@"my button" otherButtonTitles:nil,nil];
[my_alert show];
}
这是我更新的代码...谢谢