Хранить данные tableView для определенного индекса, который был нажат с помощью жеста Tap, но не с помощью didSelectItemAt - PullRequest
0 голосов
/ 24 мая 2019

У меня возникла проблема с 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
                    }
}

Теперь, когда проблема возникла, так как это изображение заполнено, и я нажимаю на 1-е изображение, оно открывает изображение, которое является последним изображением в ячейке, которое является 3-м, и происходит для всех изображений, которые были отображены в последнем изПоявится экран, теперь я понятия не имею, удерживать ли это ссылку для изображения, которое я нажал на конкретном Index, я реализовал didSelectItemAt для открытия другого viewController, поэтому я не могу использовать его для этой конкретной цели.Любая помощь будет полезна, спасибо.

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете получить ваше изображение из постукивающего вида в методе обработки распознавателя жестов:

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

Или вы можете указать номер тега для ваших imageViews, и когда вы хотите получить изображение, просто сравните идентификатор постукивающего вида и id imageView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...