我有一个名为“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
任何可以帮助我的人?
答案 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协议