为UITableViewCell添加tapped事件,代码如下:

class VideoViewController: UIViewController , UITableViewDataSource,UITableViewDelegate {
//...
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
// 播放框背景图片
let imageName : String = "cs50-"+String(indexPath.row+1)
let image:UIImage = UIImage(named: imageName)! backgroundImageView.image = nil
backgroundImageView.contentMode = UIViewContentMode.ScaleAspectFit
backgroundImageView.clipsToBounds = true
backgroundImageView.image = image
}
}

我希望点击列表中某个视频,再屏幕上方UIImageView中显示这个视频的背景图片。然而运行结果事与愿违,第一次点按并无响应;第二次点按后UIImageView显示第一次点按应该显示的图片。

仔细检查后发现,tableView的委托方法中,除了didSelectRowAtIndexPath,还有一个didDeselectRowAtIndexPath,这两者不仔细看根本看不出来。由于代码自动补全的时候De排在Se之前,所以我选择了不合适的方法didDeselect...

iOS开发中didSelectRowAtIndexPath tap事件响应延迟-LMLPHP

// 感谢这位帖主 主题 : iPhone开发中的“幽灵”——按两次,- (void)tableView:didDeselectRowAtIndexPath:才响应

04-13 20:06