在 uicollectionview 上录制时将图像快速传递给详细视图控制器

Posted

技术标签:

【中文标题】在 uicollectionview 上录制时将图像快速传递给详细视图控制器【英文标题】:Passing an image when taped on uicollectionview to a detail view controller in swift 【发布时间】:2015-10-02 19:28:14 【问题描述】:

我已经有一段时间了,但似乎无法迅速破解它

我希望用户能够在 uicollectionView 中选择一个图像,并让该图像出现在详细的视图控制器中,我可以很容易地用一段文字来做到这一点, 我可以在预加载静态图像数组时执行此操作。但我似乎无法使用加载了来自相机的图像的 collectionview 到达任何地方。

我知道我需要使用

override func performSegueWithIdentifier(identifier: String, sender: AnyObject?) 
  

这个函数可以隔离选定的单元格。

  func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) 
  

我确实有这些网点 @IBOutlet 弱 var collectionView: UICollectionView!

  var images = [UIImage]()

图像选择器将所有图像存储到这个数组中

  images.insert(newImage, atIndex: 0)

当数组将被传递给 detailviewcontroller 时,我知道必须将其复制到另一个本地数组中,然后我将如何获取突出显示的当前图像以首先显示,可能使用 indexPath.Row

问候

【问题讨论】:

【参考方案1】:

我没有使用 segues,实际上我不太明白你的问题是什么,但我会尝试向你展示如何实现它。

首先,你有一个包含图片的数组,所以我相信你的图片应该作为 images[indexPath.row] 访问

假设您已经有 UIViewController 类,其中包含 UIImageView。 如果是这样,你可以这样写:

func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) 
    let myVC = MyViewController()
    myVC.imageView.image = images[indexPath.row]
    self.presentViewController(myVC, animated: true, completion: nil)

用于模态或

func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) 
    let myVC = MyViewController()
    myVC.imageView.image = images[indexPath.row]
    self.navigationController?.pushViewController(myVC, animated: true)

如果您想将其显示为导航。

我相信 segue 基本上是一样的,但我认为你必须使用 func prepareForSegue 来准备 segue(func performSegueWithIdentifier 只会执行它)。在 prepareForSegue 你应该检查你的 segue 的标识符

if segue.identifier == "myIdentifier" 
  //your code here

如果这个标识符是正确的,把你的命令放到你的 myVC 那里。

【讨论】:

谢谢我还是很迷茫,这是我尝试过的,覆盖 func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) if (segue.identifier == "myIdentifier") let mVC = segue .destinationViewController 为! viewtwo performSegueWithIdentifier("myIdentifier", sender: self) func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) let myVC = viewtwo() myVC.imageView.image = images[indexPath.row] self.navigationController?.pushViewController (myVC,动画:真) 这是两个视图类 viewtwo : UIViewController @IBOutlet weak var imageView: UIImageView!覆盖 func viewDidLoad() super.viewDidLoad() var imageView: UIImage! 对不起,我不知道如何编辑我的 cmets,以便他们更容易看到 你需要使用didSelect...,而不是didDeselect(容易混淆)

以上是关于在 uicollectionview 上录制时将图像快速传递给详细视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在选择时将 UICollectionView 单元格扩展到屏幕的宽度?

在 UICollectionView 中选择时将单元格扩展到全屏

UICollectionView 在滚动 Alamofire 时将图像加载到错误的位置

滚动时将部分插入 UICollectionView 时的性能问题

Android在调用WebRTC时将音频录制到文件控制器

UItesting:点击 UIcollectionview 然后测试它失败