Wenn Sie nach hinten mit nur 3 Punkten außerhalb des Bildschirms nach hinten scrollen, wird das Laden von 10 weiteren historischen Punkten ausgelöst < /li>
Nachdem Laden, die Bildlaufposition springt in die 3. Position des neuen Datensatzes, anstatt die aktuelle Ansicht beizubehalten.
Die Bildlaufposition sollte stabil bleiben, wenn neue Daten geladen werden. ul>
Hier ist meine Implementierungslogik mit einigen Mockdaten: < /p>
Code: Select all
import SwiftUI
import Charts
struct DataPoint: Identifiable {
let id = UUID()
let date: Date
let value: Double
}
class ChartViewModel: ObservableObject {
@Published var dataPoints: [DataPoint] = []
private var isLoading = false
init() {
loadMoreData()
}
func loadMoreData() {
guard !isLoading else { return }
isLoading = true
let newData = self.generateDataPoints(
endDate: self.dataPoints.first?.date ?? Date(),
count: 10
)
self.dataPoints.insert(contentsOf: newData, at: 0)
self.isLoading = false
print("\(dataPoints.count) data points.")
}
private func generateDataPoints(endDate: Date, count: Int) -> [DataPoint] {
var points: [DataPoint] = []
let calendar = Calendar.current
for i in 0..