根据uigesturerecognizer的提示,我想要在我的表格视图单元格中的图像被完全屏蔽。
问题是我的didSelectRowAt func无法识别postedimage
标识符。
使用未解析的标识符' postedImage'
如何解决此问题?
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! FeedTableViewCell
imageFiles[indexPath.row].getDataInBackground { (data, error) in
if let imageData = data {
if let downloadedImage = UIImage(data: imageData) {
cell.postedImage.image = downloadedImage
}
}
}
cell.postedImage.image = UIImage(named: "test.png")
return cell
}
func removeImage() {
let imageView = (self.view.viewWithTag(100)! as! UIImageView)
imageView.removeFromSuperview()
}
func addImageViewWithImage(image: UIImage) {
let imageView = UIImageView(frame: self.view.frame)
imageView.contentMode = .scaleAspectFit
imageView.backgroundColor = UIColor.black
imageView.image! = image
imageView.tag = 100
let dismissTap = UITapGestureRecognizer(target: self, action: #selector(self.removeImage))
dismissTap.numberOfTapsRequired = 1
imageView.addGestureRecognizer(dismissTap)
self.view.addSubview(imageView)
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.addImageViewWithImage(image: postedImage[indexPath.row])
}
答案 0 :(得分:1)
我认为您应首先检查并更改didSelect中的调用 功能来自:
curl -i -X POST -H "Content-Type: application/json" -d
"{\"username\":\"abc\",\"password\":\"123\"}" http://localhost:5000/api/users
到
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.addImageViewWithImage(image: postedImage[indexPath.row])
}
现在,您的 addImageViewWithImage 将接受来自单元格中包含的ImageView的图像。
答案 1 :(得分:1)
Swift 3
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as! ImageSliderCollectionViewCell
self.imageTapped(image: cell.problemImage.image!)
}
func imageTapped(image:UIImage){
let newImageView = UIImageView(image: image)
newImageView.frame = UIScreen.main.bounds
newImageView.backgroundColor = .black
newImageView.contentMode = .scaleAspectFit
newImageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
newImageView.addGestureRecognizer(tap)
self.view.addSubview(newImageView)
self.navigationController?.isNavigationBarHidden = true
self.tabBarController?.tabBar.isHidden = true
}
func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
self.navigationController?.isNavigationBarHidden = false
self.tabBarController?.tabBar.isHidden = false
sender.view?.removeFromSuperview()
}
答案 2 :(得分:1)
SWIFT 4 -已选择TableView单元格
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as! ProductTableViewCell
self.imageTapped(image: cell.productImageView.image!)
}
func imageTapped(image:UIImage){
let newImageView = UIImageView(image: image)
newImageView.frame = UIScreen.main.bounds
newImageView.backgroundColor = .black
newImageView.contentMode = .scaleAspectFit
newImageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.dismissFullscreenImage(_:)))
newImageView.addGestureRecognizer(tap)
self.view.addSubview(newImageView)
self.navigationController?.isNavigationBarHidden = true
self.tabBarController?.tabBar.isHidden = true
}
@objc func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
self.navigationController?.isNavigationBarHidden = false
self.tabBarController?.tabBar.isHidden = false
sender.view?.removeFromSuperview()
}
答案 3 :(得分:0)
问题是你没有使用数组。似乎postedImage是UIImageView
。所以它不会起作用。你需要使用一个数组。