我有一个PFQueryTableViewController
我正在尝试学习一些 tableView 交互。
我目前拥有的:tableView 单元格在点击时增加其高度,didSelectRowAtIndexPath
或者我基本上可以将单元格相关数据与下一个 viewControllerperformSegueWithIdentifier
一起使用,同时prepareForSegue
使用一次点击。
在下面的代码中,如果我注释“点击代码以增加 tableView 单元格的高度”代码,我可以检测到双击。否则,单击会增加高度,因为代码位于 didSelect 块内。
我需要什么:单击一下,单元格高度会增加或减少。当单元格高度增加时,如果我双击,它应该将单元格数据设置为 next UIViewController
。
如果没有,单击应该增加或减少高度。双击应该将单元格数据转移到下一个UIViewController
代码如下:
var selectedCellIndexPath: NSIndexPath?
var SelectedCellHeight = CGFloat() // currently set to 480.0 tableView height
var UnselectedCellHeight = CGFloat() // currently set to 300.0 tableView unselected hight
....
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if let selectedCellIndexPath = selectedCellIndexPath {
if selectedCellIndexPath == indexPath {
return SelectedCellHeight
}
}
return UnselectedCellHeight
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var cell = tableView.dequeueReusableCellWithIdentifier("cell") as! DataViewTableViewCell!
if cell == nil {
cell = DataViewTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
}
// Below is the double Tap gesture recognizer code in which
// The single tap is working, double tap is quite difficult to get
// as the cell height increases on single tap of the cell
let doubleTap = UITapGestureRecognizer()
doubleTap.numberOfTapsRequired = 2
doubleTap.numberOfTouchesRequired = 1
tableView.addGestureRecognizer(doubleTap)
let singleTap = UITapGestureRecognizer()
singleTap.numberOfTapsRequired = 1
singleTap.numberOfTouchesRequired = 1
singleTap.requireGestureRecognizerToFail(doubleTap)
tableView.addGestureRecognizer(singleTap)
// Tap code to increases height of tableView cell
if let selectedCellIndexPath = selectedCellIndexPath {
if selectedCellIndexPath == indexPath {
self.selectedCellIndexPath = nil
cell.postComment.fadeIn()
cell.postCreatorPicture.alpha = 1
cell.postDate.fadeIn()
// cell.postTime.fadeIn()
cell.postCreator.fadeIn()
} else {
self.selectedCellIndexPath = indexPath
}
} else {
selectedCellIndexPath = indexPath
}
tableView.beginUpdates()
tableView.endUpdates()
}
func doubleTap() {
print("Double Tap")
}
func singleTap() {
print("Single Tap")
}
我可以使它工作的另一种方法是,如果我可以在代码NSIndexPath
之外获得选定的单元格didSelectRowAtIndexPath
,我基本上可以使用双击来执行 if else 以获得所需的操作。你能NSIndexPath
脱离 tableView 默认块吗?