2

viewDidLoad,我正在使用NSURLRequestNSURLConnection

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];
}

我有整个 HTML 在site_response.

我想创建一个不可见的UIWebView,它将“打开”页面,NSURLRequest以便使用 JavaScript 获取如下内容:

NSString *myText = [my_webView stringByEvaluatingJavaScriptFromString:
                       @"document.documentElement......"];

在我的 .h 中,我有:

UIWebView *my_webview;
@property (nonatomic, retain) UIWebView *my_webview;

在我的 .m 中,我有:

@synthesize torrents_webview;

我的viewDidLoadNSURLRequest

[my_webview loadRequest:site_request];

我用

-(void)webViewDidFinishLoad:(UIWebView *)webView 
{
    //an alertview here
}

为了确保它有效。但什么也没有发生。它不提供警报视图。

我究竟做错了什么?

4

2 回答 2

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 加载内容。

于 2012-06-07T02:10:35.103 回答
0

视图控制器.h

@interface TopTorrents_ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource,UIWebViewDelegate>
{
    UIWebView *torrents_webview;
}

@property (nonatomic, retain) UIWebView *torrents_webview;

视图控制器.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];

}

这是我更新的代码...谢谢

于 2012-06-08T01:34:16.923 回答