如果UIWebviewurl等于

我有一个名为“homeview”的UIWebView。 每次有人浏览UIWebview我想检查页面的URL是“ 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; } 

但没有运气…所以我试图得到一个警告,当页面等于的URL与:

 - (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 

任何人可以帮助我?

尝试这个:

使用* 比较: *比较两个string。

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

我怀疑问题的一部分是,你正在寻找一个完全匹配的URL“ http://www.website.com/cart ”,而真正被你的网页视图加载的URL是类似于“ 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) 

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

此外,为了获得更多可读代码,Applebuild议Objective-Cvariables和对象都以小写字母开头。 因此,而不是“ URLString ”,使用“ urlString ”或更具描述性的东西,如“ urlAsString ”或“ urlStringFromWebView ”。

如果UIWebView加载的URL不完全等于你的,那么你可以检查你的string的位置不是空的。 铁:

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

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