使用以下代码:

struct HomeView: View {
    var body: some View {
        NavigationView {
            List(dataTypes) { dataType in
                NavigationLink(destination: AnotherView()) {
                    HomeViewRow(dataType: dataType)
                }
            }
        }
    }
}

奇怪的是,当HomeView出现时,NavigationLink立即加载AnotherView.结果,所有AnotherView个依赖项也都加载了,尽管它在屏幕上还看不到.用户必须单击该行才能使其显示. 我的AnotherView包含一个DataSource,在那里发生各种事情.问题是在这一点上加载了整个DataSource,包括一些定时器等.

我是不是做错了什么..?怎么处理呢,用户一按HomeViewRow,AnotherView就加载了.

推荐答案

我发现解决这个问题的最好方法是使用懒惰视图.

struct NavigationLazyView<Content: View>: View {
    let build: () -> Content
    init(_ build: @autoclosure @escaping () -> Content) {
        self.build = build
    }
    var body: Content {
        build()
    }
}

那么NavigationLink应该是这样的.您可以将想要显示的视图放置在()

NavigationLink(destination: NavigationLazyView(DetailView(data: DataModel))) { Text("Item") }

Ios相关问答推荐

Swift addtarget方法的默认参数不生效

如何使用Xcode15.1在iMessage扩展模块中显示贴纸

在滚动视图中固定页眉,但在页眉上方嵌入元素

如何在SwiftUI中将图像整合到文本标签中间?

在flatter_riverpod中,如果没有ref对象,我们如何访问提供程序?

如何在SwiftUI中实现淡入淡出加粘标题屏幕效果

实现 ListView Builder Widget Flutter 后退按钮不起作用

有哪些可靠的机制可以防止 CoreData CloudKit 中的数据重复?

SensorKit - 获取数据不调用结果委托函数

如何让我的 iOS 应用程序与 api 连接?

如何在不同设备的segment控制中管理文本大小(text size)?

禁用 UITextField 的自动更正

setNeedsLayout 和 setNeedsDisplay

检测 iPhone/iPad/iPod touch 的 colored颜色 ?

警告:iPad:Icon-72.png:图标尺寸(0 x 0)

是否可以在没有 Mac 的情况下为 iOS 制作 PhoneGap 应用程序?

在原生和 phonegap 之间挣扎,简单的应用需求

如何计算 Swift 数组中元素的出现次数?

AFNetworking 2.0 向 GET 请求添加标头

iPhone:什么是 WWDR 中级证书?