Button或NavigationLink中的AsyncImage在滚动列表时不会加载。
创始人
2025-01-10 03:30:58
0

这个问题是由于SwiftUI的异步行为造成的。在滚动列表时,SwiftUI可能会在后台删除AsyncImage,使得图片不会被加载。

解决方法是使用一个自定义的Button或NavigationLink,将其包裹在一个自定义的View中,然后在自定义View中加载AsyncImage。这样,当列表滚动时,AsyncImage将保持在视图中,并正常加载图片。

以下是示例代码:

struct CustomImageButton: View {
    let imageName: String
    let action: () -> Void
    @State private var image: UIImage?

    var body: some View {
        Button(action: action) {
            if let image = image {
                Image(uiImage: image)
                    .resizable()
                    .scaledToFit()
            } else {
                ProgressView()
            }
        }
        .onAppear {
            loadImage()
        }
    }

    private func loadImage() {
        guard let url = URL(string: imageName) else { return }
        let task = URLSession.shared.dataTask(with: url) { data, response, error in
            guard let data = data, error == nil else { return }

            DispatchQueue.main.async {
                self.image = UIImage(data: data)
            }
        }
        task.resume()
    }
}

使用这个自定义Button的代码类似于这样:

struct ContentView: View {
    let imageURLs = [
        "https://picsum.photos/200",
        "https://picsum.photos/300",
        "https://picsum.photos/400"]
    
    var body: some View {
        List(imageURLs, id: \.self) { url in
            CustomImageButton(imageName: url) {
                // Do something
            }
        }
    }
}

现在,当列表滚动时,AsyncImage将一直存在,并且图片将会正常加载。

相关内容

热门资讯

3分钟总结!掌中乐游戏辅助器,... 3分钟总结!掌中乐游戏辅助器,四川熊猫辅助软件(一直是有挂)-哔哩哔哩;所有人都在同一条线上,像星星...
第二分钟外挂!余干510k副5... 第二分钟外挂!余干510k副510k,卡农血拼辅助,必备教程(新版有挂)-哔哩哔哩1、很好的工具软件...
三分钟揭露!情怀莆仙吹牛脚本,... 三分钟揭露!情怀莆仙吹牛脚本,新西部大厅辅助(确实是真的挂)-哔哩哔哩1、实时情怀莆仙吹牛脚本开挂更...
第二分钟外挂!菠萝辅助器免费版... 第二分钟外挂!菠萝辅助器免费版的功能介绍,老友广东辅助工具,必赢教程(有挂头条)-哔哩哔哩1、该软件...
4分钟分享!福建天庭开心辅助软... 4分钟分享!福建天庭开心辅助软件,皮皮衡阳字牌黑科技视频(其实存在有挂)-哔哩哔哩1、在皮皮衡阳字牌...
第九分钟外挂!卡五星辅助工具,... 第九分钟外挂!卡五星辅助工具,上品游戏辅助器,详细教程(有挂实锤)-哔哩哔哩一、上品游戏辅助器软件透...
第9分钟了解!美猴王辅助,微信... 第9分钟了解!美猴王辅助,微信小程序财神十三张辅助(总是是有挂)-哔哩哔哩1、游戏颠覆性的策略玩法,...
2分钟外挂!人皇辅助软件下载,... 2分钟外挂!人皇辅助软件下载,火神大厅辅助器,透牌教程(有挂分析)-哔哩哔哩1、人皇辅助软件下载系统...
第二分钟详情!浙江游戏大厅脚本... 第二分钟详情!浙江游戏大厅脚本软件,卡农免费辅助(竟然是有挂)-哔哩哔哩1、该软件可以轻松地帮助玩家...
三分钟外挂!闲逸亲友圈辅助下载... 三分钟外挂!闲逸亲友圈辅助下载,朱雀开心罗松开挂,新2025教程(确实有挂)-哔哩哔哩1.闲逸亲友圈...