gpt4 book ai didi

ios - 重复方法问题

转载 作者:行者123 更新时间:2023-11-28 18:23:01 25 4
gpt4 key购买 nike

我对 Objective-C 及其语法和一切都很陌生。我写了两个单独的方法,但遇到了错误:Duplicate declaration of method webView:shouldStartLoadWithRequest:navigationType:所以,看起来我需要结合我的两个 webView:shouldStartLoadWithRequest:navigationType: 方法。唯一的问题是,它们都包含 if 语句和返回值,这让我非常困惑。这是两种方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *full = [request.URL absoluteString];

if ([full isEqualToString:@"ExampleURL.com"] || [full isEqualToString:@"ExampleURL.com"]
|| [full isEqualToString:@"ExampleURL.com"] ) {

return YES;
}
else
return NO;

}

和:

-(BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *full = [request.URL absoluteString];

if ([full isEqualToString:@"ExampleURL.com"]) {
_backButton.hidden = YES;
return NO;
} else {
_backButton.hidden = NO;
}
return YES;
}

很长一段时间以来,我一直在尝试将这两种方法合而为一,但不知所措。是 if 语句让我感到困惑。有谁知道我该怎么做或者它会是什么样子?

旁注:我期望的目标是只允许加载特定的 URL。同时,我只需要在加载一个网站时隐藏后退按钮。有谁知道是否可以通过完全避免这种方法来隐藏/显示基于 URL 的后退按钮?我想我可能做错了。

最佳答案

您想要的逻辑是什么? WebView 开始加载时将调用一种方法。您将做一些事情,然后根据您是否希望继续加载返回 YESNO。您不能告诉它可以加载,然后又告诉它不能同时加载。

在你的两种方法中你有这个:

if ([full isEqualToString:@"ExampleURL.com"] || ...snipped... ) {
return YES;
}

然后是这个

if ([full isEqualToString:@"ExampleURL.com"]) {
// ...
return NO;
}

它检查相同的东西但返回相反的值。


所以我会笼统地回答。这是这种方法的一般形式。

-(BOOL)                webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
// alter application state
// return YES or NO
}

假设你想这样做,我不确定这是你想要的,但这是一般的想法:

  • 如果加载 ExampleURL.com,则显示后退按钮并允许加载
  • 否则,隐藏按钮,不允许加载。

然后你可以像这样实现这个方法:

-(BOOL)                webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
if ([[request.URL host] isEqualToString:@"ExampleURL.com"]) {
_backButton.hidden = NO;
return YES;
} else {
_backButton.hidden = YES;
return NO;
}
}

现在调整它以反射(reflect)您实际上想要的逻辑。

关于ios - 重复方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com