我发现我的followCollectionView没有在我的代码中的这个特定位置重新加载。
func unFollowBtnPressed() {
if let itemPaths = followCollectionView.indexPathsForSelectedItems() {
unFollowPosts(itemPaths)
} else {
// No item to unfollow
}
self.followCollectionView.reloadData()
}
func unFollowPosts(itemPaths: [NSIndexPath]) {
followCollectionView.performBatchUpdates({
let sortedIndexPathArray = itemPaths.sort{$1.row < $0.row}
for indexP in sortedIndexPathArray {
DataService.ds.removeFollow(PostService.ps.followingPosts[indexP.row])
PostService.ps.followingPosts.removeAtIndex(indexP.row)
}
self.followCollectionView.deleteItemsAtIndexPaths(sortedIndexPathArray)
}) { (success: Bool) in
}
}
程序执行reloadData()但是从未调用过cellForItemAtIndexPath(Everything被连接正确,因为调用reloadData的其他地方工作正常)。我认为这是一个计时问题,因为如果我重新安排我重新加载数据的地方,集合视图就可以重新加载了。以下是工作代码。我不确定为什么上述方法有效,而且下面的方法没有。我试图在dispatch_async(dispatch_get_main_queue())中包装reloadData()代码,但它仍然没有用?
func unFollowBtnPressed() {
if let itemPaths = followCollectionView.indexPathsForSelectedItems() {
unFollowPosts(itemPaths)
} else {
// No item to unfollow
self.followCollectionView.reloadData()
}
}
func unFollowPosts(itemPaths: [NSIndexPath]) {
followCollectionView.performBatchUpdates({
let sortedIndexPathArray = itemPaths.sort{$1.row < $0.row}
for indexP in sortedIndexPathArray {
DataService.ds.removeFollow(PostService.ps.followingPosts[indexP.row])
PostService.ps.followingPosts.removeAtIndex(indexP.row)
}
self.followCollectionView.deleteItemsAtIndexPaths(sortedIndexPathArray)
}) { (success: Bool) in
self.followCollectionView.reloadData()
}
}
答案 0 :(得分:0)
DispatchQueue.main.async(execute: {
//reload
})
OperationQueue.main.addOperation({
//reload
})