Ios 基于确切的URL隐藏按钮

Ios 基于确切的URL隐藏按钮,ios,objective-c,webview,uibutton,hidden,Ios,Objective C,Webview,Uibutton,Hidden,仅当某个URL显示在UIWebView中时,我才试图隐藏按钮。这是我用来执行此操作的代码: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request { NSString *host = [request.URL host]; if ([host isEqualToString:@"http://example.com/cheese"]) { _b

仅当某个URL显示在
UIWebView
中时,我才试图隐藏按钮。这是我用来执行此操作的代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request {
    NSString *host = [request.URL host];
    if ([host isEqualToString:@"http://example.com/cheese"]) {
        _backButton.hidden = YES;
    } else {
        _backButton.hidden = NO;
    }
    return 0;
}
当我测试它看后退按钮是否隐藏时,它永远不会隐藏。无论是否加载了“example.com/cheese”,它都保持在普通视图中。(这一部分也很重要,可能只是检查主机,而不是完整的URL?)

不管怎样,我都不知道要改变什么或增加什么才能让它工作。非常感谢您的帮助


Update:我在
if
语句之前添加了一个NSLog,它甚至没有启动。我还将代码更改为下面的答案(再次感谢rmaddy)。我不知道为什么这个方法没有启动。

URL的
主机部分就是主机。如果URL为:

然后,
主机
就是
example.com

如果要比较完整URL,请执行以下操作:

NSString *full = [request.URL absoluteString];
if ([full isEqualToString:@"http://example.com/cheese"]) {
}
NSString *host = [request.URL host];
if ([host isEqualToString:@"example.com"]) {
}
如果只想比较主机,请执行以下操作:

NSString *full = [request.URL absoluteString];
if ([full isEqualToString:@"http://example.com/cheese"]) {
}
NSString *host = [request.URL host];
if ([host isEqualToString:@"example.com"]) {
}
奇怪的是,在你发布的第二段代码中,它是正确的。您发布的第一段代码中有错误


另外,在第一个代码块中,在末尾调用
return 0
。您应该返回
YES
NO
,因为返回类型是
BOOL

非常出色,这对我的其他方法有很大帮助!非常感谢。但是,我改变了我的第一个方法,即隐藏按钮的方法,以查找完整的URL,当加载example.com/cheese时,它仍然不会隐藏按钮。我仔细检查了一下,确保它的插座是连接好的。我还将其更改为
返回YES
if
中输入code>,并且
返回NO在else中,它似乎仍然不起作用。为什么不看看实际的URL,看看它是什么。它可能不是你想象的那样。添加NSLog语句或使用调试器查看
if
语句前面的值。我在
if
语句前面添加了NSLog,它甚至不会触发。很奇怪。不过我确实确保了URL是完全正确的。