You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift实现网页每30秒自动刷新的问题求助

修复代码并实现网页自动刷新功能

你的代码存在几个关键问题,以下是修复后的版本,同时适配现代Swift语法:

import UIKit
import WebKit

class ViewController: UIViewController {
    // 声明WKWebView为类属性,让刷新逻辑可以访问
    private var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 初始化WKWebView,替代已废弃的UIWebView
        webView = WKWebView(frame: CGRect(x: -79, y: -60, width: 2080, height: 1200))
        view.addSubview(webView)
        
        // 安全处理URL和请求,避免强制解包崩溃
        guard let url = URL(string: "你的网页URL") else {
            print("无效的URL")
            return
        }
        let request = URLRequest(url: url)
        webView.load(request)
        
        // 使用闭包形式的Timer,避免循环引用
        Timer.scheduledTimer(withTimeInterval: 30, repeats: true) { [weak self] _ in
            self?.webView.reload()
        }
    }
}

关键修改说明:

  • 替换废弃组件:用WKWebView替代已废弃的UIWebView,需要导入WebKit框架
  • 类属性声明:把webView从局部变量改为类属性,确保刷新逻辑能访问到它
  • 移除冗余代码:删掉自定义的CGRectMake,Swift中直接使用CGRect(x:y:width:height)初始化矩形
  • 安全的URL处理:用guard let替代强制解包,避免URL无效时崩溃
  • 避免循环引用:Timer闭包中捕获weak self,防止ViewController无法被释放
  • 简化刷新逻辑:直接在Timer闭包里调用reload,省去单独的update方法(也可以保留update方法,只要保证能访问webView)

另外注意:

  • 把代码中的"你的网页URL"替换成实际要加载的网页地址
  • 如果需要适配不同屏幕尺寸,建议使用AutoLayout替代固定frame,避免在不同设备上布局错乱

内容的提问来源于stack exchange,提问作者diddly101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:35:19