2015-08-27 2 views
1

Я использую Xcode 7 Beta, Swift 2 У меня есть табличный вид с пользовательским tableViewCell. В пользовательской ячейке есть UIImageView и Label. Я также определил класс testCell для этого tableViewCell. На изображении (в таблице) я добавил UITapRecogniser. Я также включил взаимодействие с пользователемiOS - TapRecogniser в пользовательском TableViewCell не работает должным образом

Проблема: В настоящее время у меня есть 3 строки в таблице. Когда я нажимаю на изображения на первых 2 строках. Ничего не произошло. Когда я нажимаю на изображение в последней строке - действие печатает «DEF» на консоли. Это не имеет ничего общего с количеством строк - проблема сохраняется даже после перехода на 4, 5 или что-то еще. В основном используется только изображение в последней строке. Не знаете, почему ??? Ниже приведен код:

//Defining custom class for the TableViewCell 
class testCell : UITableViewCell{ 
@IBOutlet weak var testLabel: UILabel! 
@IBOutlet weak var testImage: UIImageView! 
} 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! testCell 
    cell.testLabel?.text = "ABC" 
    cell.testImage?.image = UIImage(named: "Santa") 
    return cell 

} 

@IBOutlet weak var tableView: UITableView! 

//TapGestureRecogniser Function 
@IBAction func imageTap(sender: AnyObject) { 
    print("DEF") 
} 
+0

переместите вызов распознавателя вызова с помощью testCell на cellforrowatindexpath. let cell = tableView.dequeueReusableCellWithIdentifier ("cell", forIndexPath: indexPath) как! testCell cell.testLabel .text = "ABC" cell.testImage .image = UIImage (назван: "Санта")? пусть cellTapRecognizer = UITapGestureRecognizer (цель: самостоятельно, действие: Selector ("handleTap:")) cellTapRecognizer .cancelsTouchesInView = false cell.testImage? .addGestureRecognizer (cellTapRecognizer) –

ответ

1

движения оного жеста распознаватель вызов от testCell к cellforrowatindexpath.

let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! testCell 
    cell.testLabel?.text = "ABC" 
    cell.testImage?.image = UIImage(named: "Santa") 
    let cellTapRecognizer = UITapGestureRecognizer(target: self, action:Selector("imageTap:")) 
    cellTapRecognizer.cancelsTouchesInView = false 
    cell.testImage?.addGestureRecognizer(cellTapRecognizer) 
+1

благодарит много. –

Смежные вопросы