簡體   English   中英

點擊Swift時全屏顯示tableviewcell內的圖像

[英]Full screen an image inside a tableviewcell when tapped Swift

根據uigesturerecognizer的提示,我希望在我的表格視圖單元格內的圖像被完全篩選。

問題是我的didSelectRowAt func無法識別postedimage標識符。

使用未解析的標識符'postingImage'

我該如何解決這個問題?

 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])
}

我認為您應首先檢查並更改didSelect函數中的調用:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.addImageViewWithImage(image: postedImage[indexPath.row])
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! FeedTableViewCell
    self.addImageViewWithImage(image: cell.postedImage.image)
}

現在,您的addImageViewWithImage將接受來自單元格中包含的ImageView的圖像。

斯威夫特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()
}

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()
}

問題是你沒有使用數組。 似乎postedImage是一個UIImageView 所以它不會起作用。 你需要使用一個數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM