在以下方面遇到了一些麻烦。
我在 VStack 中有一个列表,如下所示:
List{
ForEach(fetchRequest.wrappedValue, id: \.self) { city in
NavigationLink(destination: CityView(city: city, moc: self.moc)) {
cityRow(city: city)
}
}
}
此列表由 coreData fetchrequest 填充。每个 NavigationLinks 导航到 CityView 并传递一个城市对象。
CityView 有一个可观察对象“notificationHandler”,定义如下:
struct CityView: View {
@ObservedObject var notificationHandler = NotificationHandler()
@ObservedObject var city: City
var body: some View {
}
}
NotificationHandler() 设置 NotificationHandler 的一个实例,并在 init 中设置一些通知观察者,如下所示:
import Foundation
import Combine
class NotificationHandler: ObservableObject {
let nc = NotificationHandler.default
@Published var networkActive: Bool = false
init() {
nc.addObserver(self, selector: #selector(networkStart), name: Notification.Name("networkingStart"), object: nil)
nc.addObserver(self, selector: #selector(networkStop), name: Notification.Name("networkingStop"), object: nil)
}
}
我的问题是——当应用程序启动到它的第一个视图时,它延续了上面的列表——我得到了一些 NotificationHandler 实例的启动——列表的每一行都有一个。- 这使我相信列表中的 NavigationLinks 正在预先加载他们持有的 CityView。但是我相信情况不再如此,延迟加载是默认行为。除此之外,在 CityView 中添加 onAppear() 表明它们没有完全加载。
任何帮助都会非常感激,我无法弄清楚这是怎么发生的。
谢谢