Ich habe derzeit ein Xcode-Projekt, das Daten lädt und sie in Arrays platziert, die sortiert und auf einer Tabelle platziert werden. Ab jetzt, wenn ich im viewDidLoad() Teil zum Tisch gehe, habe ich eine Funktion, die alle Daten sammelt, die ich brauche. Aber um die App nicht abstürzen zu lassen, wird ein Limit von 30 geladen. Mein derzeitiges Problem ist, dass, sobald der Benutzer durch die 30 Elemente scrollt, ich möchte, dass 30 weitere unterhalb der anfänglich 30 geladen werden (Standard Scrolling). Der einzige Weg, um darüber nachzudenken, ist das Nachladen des ganzen Tisches, der nicht sehr schlau ist.Laden während des Scrollens wie Instagram oder irgendeine App
Ich möchte nur eine Standard-Scroll-Funktion, die Sie in Apps wie Instagram, Facebook oder einer beliebigen Internet-App sehen, die Daten in eine Tabellenansicht lädt. Während der Benutzer scrollt, werden mehr Daten am unteren Rand hinzugefügt. Im Folgenden werde ich das ich meinen Code kopiert haben verwenden, um die ursprünglichen Daten zu sammeln:
func findAnimalUsers() {
//STEP 1: Find users
let animalQuery = PFQuery(className: "Animals") //choosing class
animalQuery.whereKey("dog", equalTo: animalType.text!) //getting users with animal type user types
animalQuery.limit = 30 //number of users intitally showing
animalQuery.findObjectsInBackground (block: { (objects, error) -> Void in
if error == nil { //if no error
//clean up
self.animalArray.removeAll(keepingCapacity: false)
//STEP 2: Find related objects depending on query setting
for object in objects! {
self.animalArray.append(object.value(forKey: "user") as! String) //objectId of related users
}
//STEP 3: Find users
let query = PFUser.query()
query?.whereKey("objectId", containedIn: self.animalArray) //finding users
query?.addDescendingOrder("createdAt") //how to order users
query?.findObjectsInBackground(block: { (objects, error) -> Void in
if error == nil {
//clean up
self.usernameArray.removeAll(keepingCapacity: false)
self.profilePhotoArray.removeAll(keepingCapacity: false)
self.objectIDArray.removeAll(keepingCapacity: false)
//find related objects depending on query setting
for object in objects! {
self.usernameArray.append(object.object(forKey: "username") as! String)
self.profilePhotoArray.append(object.object(forKey: "profilePhoto") as! PFFile)
self.objectIDArray.append(object.objectId!)
}
} else {
print(error)
}
})
} else {
print(error)
}
})
}
ich auch den Code hinzugefügt haben, wie die Tabelle wird diese Informationen benutzen:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//define cell
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! AnimalsCell
//STEP 1: connect data from server to objects
cell.usernameLabel.text = usernameArray[indexPath.row]
cell.objectID = objectIDArray[indexPath.row]
profilePhotoArray[indexPath.row].getDataInBackground (block: { (data, error) in
if error == nil {
cell.profilePhoto.image = UIImage(data: data!)
} else {
print(error)
}
})
Also, wenn diese View-Controller kommt In viewDidLoad() habe ich findAnimalUsers() gefunden, um den initialen Ladevorgang zu starten. Wie lade ich mehr beim Scrollen herunter ???
einen Blick auf https://github.com/pronebird/ UIScrollView-InfiniteScroll –