【发布时间】:2016-06-05 21:33:48
【问题描述】:
我有一个 collectionView,其中填充了从 parse 下载的大约 60 张图像。这些图片可以根据是否上传了新图片进行更新。
但我的问题是在我加载视图后,我使用 PullToRefresh 函数刷新数据,集合视图闪烁白色,然后再次显示图像...
这里有一个视频给你看:
https://www.youtube.com/watch?v=qizaAbUnzYQ&feature=youtu.be
我整天都在尝试解决这个问题并找到解决方案,但我没有成功..!
这是我查询图像的方式:
func loadPosts() {
self.activityView.startAnimating()
let followQuery = PFQuery(className: "Follows")
followQuery.whereKey("follower", equalTo: PFUser.currentUser()!.username!)
followQuery.findObjectsInBackgroundWithBlock ({ (objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
self.followArray.removeAll(keepCapacity: false)
for object in objects! {
self.followArray.append(object.valueForKey("following") as! String)
}
let query = PFQuery(className: "Posts")
query.limit = self.page
query.whereKey("username", notContainedIn: self.followArray)
query.whereKey("username", notEqualTo: PFUser.currentUser()!.username!)
query.findObjectsInBackgroundWithBlock ({ (objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
self.postImage.removeAll(keepCapacity: false)
self.uuidArray.removeAll(keepCapacity: false)
self.usernameArray.removeAll(keepCapacity: false)
for object in objects! {
self.postImage.append(object.valueForKey("image") as! PFFile)
self.uuidArray.append(object.valueForKey("uuid") as! String)
self.usernameArray.append(object.valueForKey("username") as! String)
}
} else {
print(error!.localizedDescription)
}
self.collectionView.reloadData()
self.refresher.endRefreshing()
self.activityView.stopAnimating()
self.boxView.removeFromSuperview()
})
}
})
}
这就是我要刷新的方式:
override func viewDidLoad() {
super.viewDidLoad()
refresher.addTarget(self, action: "reload", forControlEvents: UIControlEvents.ValueChanged)
collectionView.addSubview(refresher)
loadPosts()
}
func reload() {
collectionView.reloadData()
refresher.endRefreshing()
}
【问题讨论】:
-
您的重新加载函数实际上并没有再次获取数据。它只是丢弃所有的集合视图单元格并将相同的数据加载回其中。您需要调用 loadPosts,您应该检查数据是否不同,并且只有在调用 reloadData 或更好时才重新加载不同的项目。
-
@beyowulf 啊,听起来不错!我可以通过什么方式重新加载不同的项目?
标签: ios swift flash parse-platform