【发布时间】:2017-10-17 12:17:51
【问题描述】:
我目前有一个 Xcode 项目,它加载数据并将它们放入数组中,这些数组将被排序并放置在表格中。到目前为止,当我转到 viewDidLoad() 部分中的表格时,我有一个函数可以收集我需要的所有数据。但是为了阻止应用程序崩溃,它加载了 30 个限制。我目前的问题是,一旦用户滚动浏览 30 个项目,我希望在最初的 30 个项目(标准滚动)之下再加载 30 个项目。我能想到的唯一方法是重新加载整个表,这不是很聪明。
我只想要一个标准的滚动功能,你可以在 Instagram、Facebook 等应用程序或任何在 tableview 上加载数据的互联网应用程序中看到它。所以当用户滚动时,更多的数据被添加到底部。下面我复制了我用来收集初始数据的代码:
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)
}
})
}
我还添加了表格如何使用这些信息的代码:
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)
}
})
所以当这个视图控制器出现在 viewDidLoad() 中时,我只需要在其中使用 findAnimalUsers() 来启动初始加载。 向下滚动时如何加载更多内容???
【问题讨论】:
标签: ios swift parse-server