当代码运行时它不会调用 collectionView reloadData
photoArray 是 NSMutableArray 并在 viewDidLoad 中初始化
photoArray=[[NSMutableArray alloc] init];
并解析查询
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
for (PFObject *object in objects) {
[SVProgressHUD show];
PFFile *thumbnail = [object objectForKey:@"photo"];
[thumbnail getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
NSData *imageData = data;
UIImage *image = [UIImage imageWithData:imageData];
[photosArray addObject:image];
[self.collectionView reloadData];
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
[SVProgressHUD dismiss];
}];
}
}
注意相同的代码在另一个项目中工作,那么如何解决它
最佳答案
它不起作用的原因可能是因为您正在从后台线程重新加载。如下所示包装对 reloadData
的调用:
dispatch_async(dispatch_get_main_queue(), ^{
[self.collectionView reloadData];
});
另外,不要在将对象添加到数据源 (photosArray
) 的循环中执行此操作。将该分派(dispatch)移至循环下方。
关于ios - 解析 block 内的 collectionView reloadData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33917181/