我有一個PFQueryTableViewController
,其中我正在嘗試學習一些tableView交互。在UITableViewCell上檢測雙擊和單擊執行兩個動作
我目前有:中的tableView細胞會增加其高度的水龍頭didSelectRowAtIndexPath
或者我可以用一個水龍頭使用performSegueWithIdentifier
與prepareForSegue
一起Segue公司基本細胞相關數據到明年的viewController。
在下面的代碼中,如果我評論「Tap代碼增加tableView單元格的高度」代碼,我可以檢測到雙擊。其他方面,單擊可以增加高度,因爲代碼位於didSelect塊內。
我需要的: 在單擊時,單元格高度會增加或減少。當細胞高度增加時,如果我雙擊,它應該將細胞數據傳至下一個UIViewController
。
如果不是,單擊應增加或減少高度。而雙擊應該Segue公司電池數據到明年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
代碼之外,我基本上可以使用雙擊來執行其他操作。你可以在tableView默認塊之外獲得NSIndexPath
嗎?
你可以通過委託給你傳遞cell對象,並找到indexpath: NSIndexPath * indexPath = [self.tableView indexPathForCell:cell]; – Mohamad