私はおっと、Objective-cに不慣れです。携帯電話から写真を読み込むcollectionViewがあります。アセットがフル解像度で表示されるように、別のViewControllerにセグエしたいのですが、この投稿に従いました: Rob MayoffによるprepareForSegueでUIImageView.imageを設定し、これを思い付きました。これがメインVCのコードです。
- (void)viewDidLoad
{
[super viewDidLoad];
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if (result != NULL)
{
NSLog(@"See Asset: %@", result);
[_gallery addObject:result];
}
};
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop)
{
if(group != nil)
{
[group enumerateAssetsUsingBlock: assetEnumerator];
}
[self.collectionView reloadData];
};
_gallery = [[NSMutableArray alloc]init];
_library = [[ALAssetsLibrary alloc] init];
[_library enumerateGroupsWithTypes: ALAssetsGroupAlbum
usingBlock: assetGroupEnumerator
failureBlock: ^(NSError *error)
{
NSLog(@"Failure");
}];
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return _gallery.count;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
ViewControllerCell *myCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];
_asset = [_gallery objectAtIndex:indexPath.row];
_photo =[UIImage imageWithCGImage:[_asset thumbnail]] ;
myCell.myImage.image = _photo;
return myCell;
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
_asset = [_gallery objectAtIndex:indexPath.row];
_photo = [UIImage imageWithCGImage:[_asset thumbnail]];
ALAssetRepresentation *rep = [_asset defaultRepresentation];
CGImageRef ref = [rep fullResolutionImage];
_img = [UIImage imageWithCGImage: ref];
}
//the segue is set to modal
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ShowPhoto"]) {
PhotoZoomController *photoZoom = segue.destinationViewController;
photoZoom.object = sender;
}
}
次に、完全な画像を表示するために、宛先VCのviewDidLoadメソッドでこれを行います。
- (void)viewDidLoad
{
ViewController *vc = [[ViewController alloc] init];
_image = vc.img;
[super viewDidLoad];
_largePhoto.image = _image; / *largePhoto is the UIImageView @property declared
in destination VC.h */
}
空白のimageViewを取得しています。私は確かに何か間違ったことをしました、そして本当にあなたの助けが必要です。もうどうしたらいいのかわからないのでよろしくお願いします。