在 UITableViewCell 中选择图像
Selecting an image inside of TableViewCell
我有一个 tableView,里面有 3 张图片。
我希望能够 select 一张图片并被定向到另一张 VC 并显示已点击的图片。
对于我的图像(从 Parse 下载),我有一个 uuid(唯一标识符),在我使用 collectionView 之前,我是这样设置的:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
postuuid.append(uuidArray[indexPath.row])
let post = self.storyboard?.instantiateViewControllerWithIdentifier("collectionImage") as! CollectionImageViewController
self.navigationController?.pushViewController(post, animated: true)
}
这让我得到了我现在想要实现的目标...
我意识到我不能使用 TableView SelectedRow..... 因为那显然会 select 整行,所以我设置了一个图像 UITapGestureRecognized 像这样:
let imageTap = UITapGestureRecognizer(target: self, action: "imageTap")
imageTap.numberOfTapsRequired = 1
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(imageTap)
然后一个 func() 将它重定向到一个新的 VC:
func imageTap() {
postuuid.append// My issues here, I'm not sure how to set it up or reference it to the cellForRow, like I did it in the collectionViewSelected item code above.
let post = self.storyboard?.instantiateViewControllerWithIdentifier("collectionImage") as! CollectionImageViewController
self.navigationController?.pushViewController(post, animated: true)
}
正如您从我的代码中看到的那样,我不知道,或者目前似乎无法弄清楚,如何将它连接到唯一 ID...
我将 UUID 设置为 var = uuidArray = String,它正在正确下载它们...
CellForRow...:[=14=]
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
var counter = (indexPath.row * 3)
let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! ProfileTableViewCell
for imageView in cell.threeImages {
imageView.image = UIImage(named: "ImagePlaceHolder")
if counter < imageArray.count {
imageView.hidden = false
let finalImage = imageArray[counter++]["image"]
finalImage!.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
if error == nil {
if let imageData = imageData {
imageView.image = UIImage(data:imageData)
}}}} else {
imageView.hidden = true
}
let imageTap = UITapGestureRecognizer(target: self, action: "imageTap")
imageTap.numberOfTapsRequired = 1
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(imageTap)
return cell
}
如果有人能帮我解决这个问题,我非常感谢你!
此致。
您可以添加 indexPath.row 作为 tapGesture 识别器的标签:
...
let imageTap = UITapGestureRecognizer(target: self, action: "imageTap:")
imageView.tag = indexPath.row
...
并将函数设置为
func imageTap(sender:AnyObject) {
postuuid.append(uuidArray[sender.view.tag])
let post = self.storyboard?.instantiateViewControllerWithIdentifier("collectionImage") as! CollectionImageViewController
self.navigationController?.pushViewController(post, animated: true)
}
我有一个 tableView,里面有 3 张图片。
我希望能够 select 一张图片并被定向到另一张 VC 并显示已点击的图片。
对于我的图像(从 Parse 下载),我有一个 uuid(唯一标识符),在我使用 collectionView 之前,我是这样设置的:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
postuuid.append(uuidArray[indexPath.row])
let post = self.storyboard?.instantiateViewControllerWithIdentifier("collectionImage") as! CollectionImageViewController
self.navigationController?.pushViewController(post, animated: true)
}
这让我得到了我现在想要实现的目标...
我意识到我不能使用 TableView SelectedRow..... 因为那显然会 select 整行,所以我设置了一个图像 UITapGestureRecognized 像这样:
let imageTap = UITapGestureRecognizer(target: self, action: "imageTap")
imageTap.numberOfTapsRequired = 1
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(imageTap)
然后一个 func() 将它重定向到一个新的 VC:
func imageTap() {
postuuid.append// My issues here, I'm not sure how to set it up or reference it to the cellForRow, like I did it in the collectionViewSelected item code above.
let post = self.storyboard?.instantiateViewControllerWithIdentifier("collectionImage") as! CollectionImageViewController
self.navigationController?.pushViewController(post, animated: true)
}
正如您从我的代码中看到的那样,我不知道,或者目前似乎无法弄清楚,如何将它连接到唯一 ID...
我将 UUID 设置为 var = uuidArray = String,它正在正确下载它们...
CellForRow...:[=14=]
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
var counter = (indexPath.row * 3)
let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! ProfileTableViewCell
for imageView in cell.threeImages {
imageView.image = UIImage(named: "ImagePlaceHolder")
if counter < imageArray.count {
imageView.hidden = false
let finalImage = imageArray[counter++]["image"]
finalImage!.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
if error == nil {
if let imageData = imageData {
imageView.image = UIImage(data:imageData)
}}}} else {
imageView.hidden = true
}
let imageTap = UITapGestureRecognizer(target: self, action: "imageTap")
imageTap.numberOfTapsRequired = 1
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(imageTap)
return cell
}
如果有人能帮我解决这个问题,我非常感谢你!
此致。
您可以添加 indexPath.row 作为 tapGesture 识别器的标签:
...
let imageTap = UITapGestureRecognizer(target: self, action: "imageTap:")
imageView.tag = indexPath.row
...
并将函数设置为
func imageTap(sender:AnyObject) {
postuuid.append(uuidArray[sender.view.tag])
let post = self.storyboard?.instantiateViewControllerWithIdentifier("collectionImage") as! CollectionImageViewController
self.navigationController?.pushViewController(post, animated: true)
}