我的“newPlayerVC”中有一个UIIMagePickerController,它将缩略图图像(在我将其调整为100x100像素后)保存到AssetLibrary,没有任何问题。
保存图像后,我再次对AssetLibrary进行了另一次调用,以获取刚刚保存的图像以显示用户(并检查它是否正常工作)。那个电话看起来像这样;
// Display new thumbnail via AssetLIbrary call
__block UIImage *_image = nil;
[assetLib assetForURL:(playerImageURL)
resultBlock:^(ALAsset *asset) {
_image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]];
NSLog(@"Got the asset thumbnail, %@",_image);
[playerImageButton setImage:_image forState:UIControlStateNormal];
}
failureBlock:^(NSError *error) {
NSLog(@"Asset (image) fetch failed because %@",error);
}];
到目前为止一切正常。 终端确认日志:“p.playerImage = assets-library://asset/asset.JPG?id = A79242D5-BC91-490B-BC37-0A9F529675EE& ext = JPG”和“获得资产缩略图,UIImage:0xcb5b8a0” - 所以我知道它从资产库中获取图像。
然后我尝试从我的“playerTableVC”做一个非常类似的调用,用我之前保存的图像填充一个tableview到我的自定义单元格中的UIView - 它只是不起作用(自定义单元格没问题,静止图像)。我也从Xcode中得到任何错误或警告。该代码看起来像这个函数“ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath”;
// Set up Asset library
ALAssetsLibrary *assetLib = [[ALAssetsLibrary alloc]init];
__block UIImage *_image = nil;
[assetLib assetForURL:[NSURL URLWithString:p.playerImage]
resultBlock:^(ALAsset *asset) {
_image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
NSLog(@"Got the asset thumbnail, %@", _image);
}
failureBlock:^(NSError *error) {
NSLog(@"Asset fetch failed: %@",error);
}];
// If no cell, create new
if (cell == nil) {
cell = [[CellPlayer alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
// If cell present, assign values
NSLog(@"p.playerImage = %@", p.playerImage); // Check = ok
// Check if imageurl is empty = default image else the user choosen image
if ([p.playerImage isEqualToString:@""]) {
cell.cellPlayerIcon.image = [UIImage imageNamed:@"defaultImageFrame_114x114"];
// Add sortingorder ("player position") to tableview
cell.cellPlayerStarIcon.text = [NSString stringWithFormat:@"%i", (indexPath.row +1)];
} else {
cell.cellPlayerIcon.image = _image; // = NO IMAGE IN CELL?
// Add sortingorder ("player position") to tableview
cell.cellPlayerStarIcon.text = [NSString stringWithFormat:@"%i.", (indexPath.row +1)];
}
cell.cellPlayerName.text = p.playerName;
cell.cellPlayerTime.text = p.playerTime;
cell.cellPlayerTimestamp.text = [NSString stringWithFormat:@"%@", p.playerTimeStamp]; // @"2012-10-01 @ 8:06";
return cell;
}
我相信我在填充上面的单元格时设置UIIMage有问题。使用静态UIImage,其他一切都可以正常工作。尝试了很多这方面的变化,并相信我知道终于走了“代码 - flind”...; - )
有任何解决方案,提示,指示等吗?谢谢: - )
答案 0 :(得分:0)
<强>解决!强>
原来,该块没有将图像保留在上面的“_image”变量中。简单地通过将“_image”传递给块中的UIImage“myImage”之类的局部变量来保留它。它现在工作正常,我的单元格按预期从资产库中获取图像: - )