ios - 解析 block 内的 collectionView reloadData

标签 ios objective-c

当代码运行时它不会调用 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/

相关文章:

ios - 如何在 AppDelegate.swift 中使用我的类(class)

ios - 如何以编程方式判断 ViewController 是否呈现 UIModalPresentationFormSheet 全屏打开?

iphone - 尝试使用 AdMob 运行应用时出现奇怪的错误

c++ - 在 swift 项目中桥接 objective-c 库不起作用

ios - 观察可变数组中对象某个属性的变化

ios - Swift - 如何覆盖具体子类中的扩展方法

ios - 设置 AppleLanguages 在 iOS 7 上不起作用?

ios - cellForRow 返回 nil - swift 3

ios - 相机对焦 ios

objective-c - 方法调用 - Cocoa/Obj-C