【问题标题】:Having `didFailLoadWithError:` only run once on startup让 `didFailLoadWithError:` 在启动时只运行一次
【发布时间】:2013-05-29 15:20:45
【问题描述】:

如果我在页面完成加载之前尝试单击另一个链接,didFailLoadWithError: 会触发并取消隐藏我隐藏的连接问题图像。这是我正在使用的代码:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"didFinish: %@; stillLoading:%@", [[webView request]URL],
          (webView.loading?@"NO":@"YES"));
}

-(void)webView:(UIWebView *)myWebView didFailLoadWithError:(NSError *)error {

    NSLog(@"No internet connection");
    _connectionError.hidden = NO;
}

有没有人知道一种快速的方法,让它只在应用启动时运行一次,并且在其余时间不再运行?

【问题讨论】:

    标签: ios objective-c uiwebview didfailwitherror


    【解决方案1】:

    这是每次失败时都会触发的委托方法..

    试试这样的。 (在 header 中创建一个名为 firstTimeRun 的 BOOL)

    -(void)webView:(UIWebView *)myWebView didFailLoadWithError:(NSError *)error {
    
        if (firstTimeRun) {
    
            _connectionError.hidden = NO;
            firstTimeRun = NO;
        }
    }
    

    如果您只想在第一次加载时使用,请记住在加载网站时将 firstTimeRun 设置为 NO。

    编辑:

    在您的头文件 (.h) 中编写以下内容

    @interface ... {
    
    @property BOOL firstTimeRun;
    
    }
    

    您可能需要在方法中的某处使用 NO 对其进行初始化。您需要先发布课程的 .h 和 .m 文件,然后我才能为您提供更多帮助。

    【讨论】:

    • 非常感谢,帮了大忙。不过,我对 Objective-c 还是很陌生,你知道我的 firstTimeRun 应该是什么样子吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多