显示图像在Table视图中使用AssetLibrary

目前我有2个视图控制器,我从视图控制器,Aselect一张照片,并传递图像url到第二个视图控制器,B和使用url来检索从A.select的图像,但问题是图像可以检索viewDidLoad但无法在表格viewcellForRowAtIndexPath中检索。 我不确定有人能帮助我什么是根本原因?

//上午

(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // Initialize View Controller B B *b = [[B alloc]initWithNibName:@"PhotosListViewController" bundle:nil]; // get the ref url NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL]; photoListViewController.test = imageURL; NSLog(@"%@",imageURL); [picker dismissViewControllerAnimated:YES completion:nil]; [self.navigationController pushViewController:photoListViewController animated:YES]; } - (IBAction)organiseAttachement:(id)sender { // Initialize View Controller B *b = [[PhotosListViewController alloc]initWithNibName:@"B" bundle:nil]; [self.navigationController pushViewController:b animated:YES]; } 

//了Bh

 #import <UIKit/UIKit.h> @interface PhotosListViewController : UITableViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate> @property (nonatomic, strong) NSURL *test; @end 

//家蚕

 - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"Image is THIS --- %@",test); // define the block to call when we get the asset based on the url (below) ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *imageAsset) { ALAssetRepresentation *imageRep = [imageAsset defaultRepresentation]; CGImageRef iref = [imageRep fullResolutionImage]; if (iref) { self.galleryImage = [UIImage imageWithCGImage:iref]; } [self.tableView reloadData]; NSLog(@"[imageRep filename] : %@", [imageRep filename]); NSLog(@"[imageRep image] : %@", galleryImage); }; // get the asset library and fetch the asset based on the ref url (pass in block above) ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init]; [assetslibrary assetForURL:test resultBlock:resultblock failureBlock:nil] } (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.imageView.image = self.galleryImage; return cell; } 

更换

 // define the block to call when we get the asset based on the url (below) ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *imageAsset) { ALAssetRepresentation *imageRep = [imageAsset defaultRepresentation]; CGImageRef iref = [imageRep fullResolutionImage]; if (iref) { self.galleryImage = [UIImage imageWithCGImage:iref]; } NSLog(@"[imageRep filename] : %@", [imageRep filename]); NSLog(@"[imageRep image] : %@", galleryImage); }; 

 // define the block to call when we get the asset based on the url (below) ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *imageAsset) { ALAssetRepresentation *imageRep = [imageAsset defaultRepresentation]; CGImageRef iref = [imageRep fullResolutionImage]; if (iref) { self.galleryImage = [UIImage imageWithCGImage:iref]; } [self.tableView reloadData]; //Reload the tableView. NSLog(@"[imageRep filename] : %@", [imageRep filename]); NSLog(@"[imageRep image] : %@", galleryImage); }; 

编辑:

上午

 @interface A () @property(nonatomic,strong) B *b; @end @implementation b -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { if(self.b) { // Initialize View Controller B self.b = [[B alloc]initWithNibName:@"PhotosListViewController" bundle:nil]; } // get the ref url NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL]; self.b.test = imageURL; NSLog(@"%@",imageURL); [picker dismissViewControllerAnimated:YES completion:nil]; [self.navigationController pushViewController:self.b animated:YES]; } - (IBAction)organiseAttachement:(id)sender { if(self.b == nil) { // Initialize View Controller self.b = [[PhotosListViewController alloc]initWithNibName:@"B" bundle:nil]; } [self.navigationController pushViewController:self.b animated:YES]; } @end