Ich versuche, meine UITableView mit mehr Zeilen anhängen, sobald der Benutzer den unteren Rand von UITableView erreicht. Allerdings, wenn ich nach unten zu scrollen versuchen, mehr Daten nenne ich eine Fehlermeldung erhalten, die sagt:Wie fügt man beim Paginieren Zeilen zu UITableView hinzu?
fatal error: Index out of range
Hier ist mein Code:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let contentOffset = scrollView.contentOffset.y
let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;
if !isLoadingMore && (maximumOffset - contentOffset <= threshold) {
self.isLoadingMore = true
DispatchQueue.main.async() {
self.fetchMovieData()
self.isLoadingMore = false
}
}
}
ich auch halten werde verfolgen, wie viele Zeilen sind wobei zu meinem Tisch Ansicht hinzugefügt Hinzufügen zu meinen rowNumber zählen als weitere Daten genannt:
var rowNumber: Int = 0
Hier ist, wo ich meine Anfrage mache:
func fetchMovieData(_ url: String,_ params: Dictionary<String, String>) {
if more {
Alamofire.request(url, parameters: params)
.responseJSON {
response in
switch response.result {
case .success(let value):
self.currentPageNumber += 1
let json = JSON(value)
self.movieObject = [MovieModel.init(data: json)]
self.rowNumber += self.movieObject[0].movieList[0].movieDict.count
self.tableView.reloadData()
case .failure(let error):
print(error)
}
}
}
}
Also ich denke, meine Frage ist, sollte ich anrufen werden:
self.tableView.reloadData()
Um mehr Daten meine Tabellenansicht anhängen oder gibt es etwas, was ich vermisst habe?
Nun, das sollte es tun. Es scheint, dass Ihr Problem hier liegt: 'self.movieObject = ...' - Sie erstellen ein neues Modell und ersetzen das alte. Sie sollten Ihr Modellobjekt konstruieren, damit Sie neue Daten anhängen können. – Losiowaty