TableView重新加载数据

时间:2014-05-07 16:18:08

标签: ios uitableview

我尝试使用tableview查看我的所有应用相册。 现在,问题是每当我得到重新加载数据时它似乎无法工作。 我尝试加载保存在项目中的图像,它工作正常。

我做错了什么?

 [super viewDidLoad];
 // Declare vars.
 NSMutableArray *uploadImages = [NSMutableArray new];
 ALAssetsLibrary *library = AssatLibaryHelper.defaultAssetsLibrary;

// Going on albums..
[library enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)
 {
     NSInteger numberOfAssets = [group numberOfAssets];

     // If there photos..
     if (numberOfAssets > 0)
     {

         // Going on all the photos
         for (int i = 0; i <= numberOfAssets-1; i++)
         {
             [group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:i] options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
              {
                  if (result != nil)
                  {
                      UIImage *thumbnail = [UIImage imageWithCGImage:[result thumbnail]];

                      [uploadImages addObject:thumbnail];
                  }
              }];
         }

         self.allImages = uploadImages;
         [self.tableView reloadData];
     }

 }
                     failureBlock:^(NSError *error)
 {

 }];

1 个答案:

答案 0 :(得分:0)

您遇到一些与异步代码相关的问题。

首先,只要您的ALAsset仍然存在,您的ALAssetsLibrary就会一样好。但是当ALAssetsLibrary返回时,viewDidLoad会被取消分配。

而不是使用局部变量:

ALAssetsLibrary *library = …

改为使用strong属性:

@property (nonatomic, strong) ALAssetsLibrary *library;

self.library = …

其次,您的reloadData来电之前正在进行,并且图片会存储到uploadImages。在保存所有图像后,您需要重新加载表视图