我正在开发iOS应用程序。我有一个集合视图,它有一些图像。图像来自我创建的数组。当我点击集合视图的单元格时,第二个视图控制器打开。我想要显示我点击集合视图的第二个视图控制器上的特定图像。怎么做?
答案 0 :(得分:1)
在SecondViewController中创建图像对象,如下所示:
@property (nonatomic, strong) UIImageView *detailImageView;
@property (nonatomic, strong) UIImage *detailImage;
在FirstViewController.m中,执行以下操作:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
CollectionViewCell *cell = [collectionViewObject dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.detailImage = cell.imageView.image;
[self.navigationController pushViewController:secondViewController animated:YES];
}
然后在SecondViewController.m viewDidLoad方法
- (void)viewDidLoad
{
[super viewDidLoad];
self.detailImageView.image = self.detailImage;
}
希望这对你有用!!
答案 1 :(得分:0)
我希望您在下一个ViewController中创建了UIImageView
第1步。在你的下一个ViewController.h创建图像
@property (nonatomic, strong) UIImage *image;
然后在之前的ViewControler.m中找到你didSelectItemAtIndexPath
方法,或者创建它们,并添加下一个代码:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentificer forIndexPath:indexPath];
MyViewController *myvc = [[MyViewController alloc] init];
myvc.image = cell.imageView.image;
[self presentViewController: myvc animated:YES completion:nil];
}
如果您不使用故事板,请转到第3步。
第2步。 如果您使用storyboard 在下一个ViewController.h中创建图片
然后在之前的ViewControler.m中找到你的didSelectItemAtIndexPath
方法,或者创建它们,并添加下一个代码:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"nextVCSeagueName" sender:self];
}
添加方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"nextVCSeagueName"]) {
MyviewController *myvc = segue.destinationViewController;
myvc.image = [imagesArray objectAtIndex:[[self.collectionView indexPathsForSelectedItems] firstObject]];
}
}
第3步。在viewDidLoad
的下一个ViewController.m中添加
-(void)viewDidLoad {
[super viewDidLoad];
myImageView.image = self.image;
}
答案 2 :(得分:0)
使用委托方法知道要传递的图像 -
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
假设您的图片数组名为 imageArray 。在你的类中,声明一个像 -
这样的图像字符串@propert NSString *selectedImage;
现在,当您实现didSelectItemAtIndexPath方法时,可以将selectedImage变量中该特定行中加载的图像保存。然后,您可以实现prepareForSegue方法将此变量传递给第二个视图控制器。
我们假设您已在 SecondViewcontroller.h 文件中声明了一个名为 imageFromFirstviewController 的变量。
@propert NSString *imageFromFirstviewController;
现在,您可以在 didSelectItemAtIndexPath 方法中执行以下操作 -
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
self.selectedImage = [self.imageArray objectAtIndex:indexPath.row] ;
}
之后通过segue方法将此图像名称传递给第二视图控制器。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// "my-segue-name" which is assign in the storyboard while attaching the segue
if ([[segue identifier] isEqualToString:@"my-segue-name"])
{
SecondViewcontroller *secondVC = [segue destinationViewController];
secondVC.imageFromFirstviewController = self.selectedImage;
}
}
现在,由于您可以在第二个视图控制器中访问所选图像,因此无论如何都可以使用此imageFromFirstviewController。