如果UIWebview url等于

时间:2013-09-17 09:45:01

标签: ios uiwebview storyboard

我有一个名为“homeview”的UIWebView。每当有人浏览UIWebview时,我想检查页面网址是否为“http://www.website.com/cart”,然后将标签控制器更改为第二个标签。

所以我这样做了:

- (BOOL)webView:(UIWebView *)homeview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *URLString = [[request URL] absoluteString];
if ([URLString isEqualToString:@"http://www.website.com/cart"]) {
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:2];
}
return YES;
}

但是没有运气......所以我试图在页面等于网址时发出警告:

- (BOOL)webView:(UIWebView *)homeview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *URLString = [[request URL] absoluteString];
if ([URLString isEqualToString:@"http://www.website.com/cart"]) {
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Alert Title here"
                                                   message: @"Alert Message here"
                                                  delegate: self
                                         cancelButtonTitle:@"Cancel"
                                         otherButtonTitles:@"OK",nil];


    [alert show];
    [alert release];
}
return YES;
}

但这也不是诀窍......

上面的代码放在我的FirstViewController.m中,这是我的FirstViewController.h:

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController
{
IBOutlet UIActivityIndicatorView *indicator;
IBOutlet UIWebView *homeview;
NSTimer *timer;
}
@property (retain, nonatomic) IBOutlet UIWebView *homepage;

@end

任何可以帮助我的人?​​

3 个答案:

答案 0 :(得分:3)

试试这个:

使用* 比较: *来比较两个字符串。

- (BOOL)webView:(UIWebView *)homeview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *URLString = [[request URL] absoluteString];
if ([URLString Compare:@"http://www.website.com/cart"]==NSOrderedSame) {
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:2];
}
return YES;
}

答案 1 :(得分:1)

我怀疑部分问题在于您正在寻找与网址“http://www.website.com/cart”匹配的完全匹配,而您的网络视图真正加载的网址类似于“ http://www.website.com/cart?userid=123456&order=abcdefg&giftidea=something+expensive”。

乍一看,你的想法对我来说似乎是一个不错的方法,但请尝试改变这一行:

if ([URLString isEqualToString:@"http://www.website.com/cart"]) {

到此:

if([URLString compare: @"http://www.website.com/cart" options: NSCaseInsensitiveSearch range: NSMakeRange(0, 27)] == NSOrderedSame)

看看你是否有更快乐的结果。

此外,对于更易读的代码,Apple建议Objective-C变量和对象都以小写字母开头。因此,请使用“URLString”或更具描述性的内容,而不是“urlString”,而不是“urlAsString”或“urlStringFromWebView”。

答案 2 :(得分:0)

如果UIWebView加载的url与您的url不完全相同,那么您可以检查字符串的位置是否为空。 F.e:

    if ([[[request URL] absoluteString]
            rangeOfString:@"http://www.website.com/cart"].location != NSNotFound) { ... }

或者您可以查看@“www.website.com/cart”行以考虑https协议