我遇到UITableVIew
的问题,可以说我有一个带有tableView的屏幕,该屏幕的 resuablecell 单元格中也包含三个图像,我想以弹出窗口以查看较大的内容,因此添加了UITapGesture
,并且为了打开而我正在传递这样的图像引用,
@objc func showImage (_ sender: UITapGestureRecognizer){
print("ImageTapped")
let imagePopupVC: ImagePopupViewController = self.storyboard?.instantiateViewController(withIdentifier: "imagePopupVC") as! ImagePopupViewController
imagePopupVC.isImage = true
if popUpFeedImage != nil {
// here this feedImage is the one i am passing to other VC
imagePopupVC.image = popUpFeedImage
}
self.navigationController?.pushViewController(imagePopupVC, animated: false)
}
在这里,我正在popUpFeedImage
cellForRowAt
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: MemberTableViewCell = tableView.dequeueReusableCell(withIdentifier: "MemberTableViewCell", for: indexPath) as! MemberTableViewCell
let urlString: URL = URL(string: postContent.contentURL)!
let tap = UITapGestureRecognizer(target: self, action: #selector(showImage(_:)))
cell.feedImageView.isUserInteractionEnabled = true
cell.feedImageView.addGestureRecognizer(tap)
cell.feedImageView.sd_setImage(with: urlString, placeholderImage: nil) { (image, error, imageCacheType, url) in
self.popUpFeedImage = image
}
}
现在问题出在哪里,当此图像被填充并且我点击第一个图像时,它将打开该图像,该图像是单元格中最后一个图像(第三个图像),并且发生在最后一个显示的图像上将会显示屏幕的,现在我不知道要保留我在特定Index
上点击的图像的引用,
我已经实现了didSelectItemAt
来打开另一个viewController
,所以我不能将其用于此特定目的。
任何帮助都会有所帮助。
答案 0 :(得分:0)
您可以从手势识别器处理方法中的点击视图中获取图像:
@objc func showImage (_ sender: UITapGestureRecognizer){
print("ImageTapped")
guard let tappedView = sender.view else { return }
if let imageView = tappedView as? UIImageView {
self.popUpFeedImage = imageView.image
} else {
tappedView.subviews.forEach { subView in
if subView.isKind(of: UIImageView.self) {
self.popUpFeedImage = subView.image
}
}
}
let imagePopupVC: ImagePopupViewController = self.storyboard?.instantiateViewController(withIdentifier: "imagePopupVC") as! ImagePopupViewController
imagePopupVC.isImage = true
if popUpFeedImage != nil {
// here this feedImage is the one i am passing to other VC
imagePopupVC.image = popUpFeedImage
}
self.navigationController?.pushViewController(imagePopupVC, animated: false)
}
或者您可以为imageView指定标签号,而要获取图像时,只需比较点击的视图ID和imageView ID。