2017-02-08 4 views
0

У меня возникла проблема с использованием UITapGestureRecogniser для изображения в tableViewCell. Я создал выход объекта UIImageView в tableViewCell, и мое требование - всякий раз, когда я нажимаю на это imageView другое изображение должно быть отображено. Я пробовал код ниже, но это не сработало.Gesturerecogniser для изображения в tableviewcell в swift3

Любая помощь будет оценена!

Cell

import UIKit 

class resultsTableViewCell: UITableViewCell { 
    @IBOutlet weak var star_selected: UIImageView! 
    @IBOutlet weak var star_unselected: UIImageView! 

    override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
    } 

    override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 
    // Configure the view for the selected state 
    } 
} 

Посмотреть контроллер

class resultsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate { 
    @IBOutlet weak var resultsTable: UITableView! 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    flightCodeView = FlightCodeView(frame: CGRect.zero) 
    self.view.addSubview(flightCodeView) 
    } 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 5 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "resultsCellIdentifier", for: indexPath) as! resultsTableViewCell 

    let image : UIImage = UIImage(named: "star_unselected")! 
    cell.star_unselected.image = image 

    let tapGesture = UITapGestureRecognizer(target: self, action: Selector(("ImageSelected"))) 
    cell.star_unselected.addGestureRecognizer(tapGesture) 
    tapGesture.delegate = self 
    return cell 
    } 

    func ImageSelected(sender: UITapGestureRecognizer? = nil) { 
    // just creating an alert to prove our tap worked! 
    let image: UIImage = UIImage(named: "star_selected.png")! 
    cell.star_selected.image = image 
    } 
} 
+0

c вся эта функция вне класса ячейки, func ImageSelected (отправитель: UITapGestureRecognizer? = nil) { print ("yess") // просто создаем оповещение, чтобы доказать, что наш кран работал! let image: UIImage = UIImage (имя: "star_selected.png")! cell.star_selected.image = image } –

+0

Проверьте это: http://stackoverflow.com/questions/39875851/how-to-know-which-pic-in-which-tableview-cell-has-been-touched/39876440 # 39876440 –

+0

по умолчанию UIImageView будет ** не ** включен для userInteraction, поэтому обязательно установите это в StoryBoard или в коде – Russell

ответ

0

Проверьте это: imageView.isUserInteractionEnabled = истинный

0

добавить этот код непосредственно ниже переменной tapgesure ...

cell.userInteractionEnabled = true 
cell.addGestureRecognizer(tapGesture) 

Я надеюсь, что это поможет ..

0

Добавьте этот код в cellForRowAt:

cell.star_unselected.userInteractionEnabled = истинный

функция будет выглядеть следующим образом:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

let cell = tableView.dequeueReusableCell(withIdentifier: "resultsCellIdentifier", for: indexPath) as! resultsTableViewCell 

let image : UIImage = UIImage(named: "star_unselected")! 
cell.star_unselected.image = image 

cell.star_unselected.userInteractionEnabled = true 

let tapGesture = UITapGestureRecognizer(target: self, action: Selector(("ImageSelected"))) 
cell.star_unselected.addGestureRecognizer(tapGesture) 
tapGesture.delegate = self 
return cell