在 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 时将图像加载到错误的位置