在shouldStartLoadWithRequest方法中修改URL请求并在Webview中显示

时间:2012-04-25 11:40:09

标签: iphone ipad uiwebview

我有一个webview和3个网址。

因此,当应用程序启动时,我将在webview中显示URL1。

现在,当我选择webview的任何部分时,它将重定向到URL2。

但我只想从URL2获取一些数据,而不想将其显示给用户。

我可以通过使用带有返回NO的shouldStartLoadWithRequest:方法来完成。

但现在我需要在网络视图中显示从URL2收到的数据的URL 3。

但它没有显示任何内容,我该怎么办?

为此,我使用以下代码

-(void)viewDidLoad
{
//Normal showing of URL1 in webview

}

- (BOOL)webView:(UIWebView*)webViewRef shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
{
if(selectedDataExist){

//get data from URL2
//Make New URL3 string
[webView loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:myNewUrlString]]];
return NO;
}
else
{
//by default URL1 comes 
return YES;
}

2 个答案:

答案 0 :(得分:1)

我这样做了:

我试图通过GET方法发送信息,所以我将所请求的任何网址的最后10个字符(在我的情况下)子字符串,如果它没有GET方法,它会附加GET的新请求url的方法并返回NO,下次调用此函数时,它将具有GET方法,因此它将继续。

 -(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {

NSString *urls = [request.URL absoluteString];
NSString *code = [urls substringFromIndex: [urls length] - 10];

if (![code isEqualToString:@"?iphone=si"]) {
    NSURL *nueva = [NSURL URLWithString:[NSString stringWithFormat:@"%@?iphone=si",urls]];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:nueva];
    [self.mywebview loadRequest:requestObj];
    return NO;
}
return YES;
}

答案 1 :(得分:-1)

我就是这样做的

                NSURL *LocalUrl = [[NSURL alloc] initWithString:[newUrl stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding]];

                NSURLRequest *objNSURLRequest;

                objNSURLRequest = [NSURLRequest requestWithURL:LocalUrl];

                [yourwebview loadRequest:ObjNSURLRequest];

                [LocalUrl release];

                return NO;