Ich habe ein PFQueryTableViewController
, in dem ich einige Tableview-Interaktionen zu lernen versuchen.Erkennen von Doppel- und Einzel Tippen auf UITableViewCell auszuführen zwei Aktions
Was ich derzeit habe: Die Tableview Zelle erhöht seine Höhe auf einem Hahn didSelectRowAtIndexPath
oder ich kann im Grunde Zelle bezogene Daten zum nächsten Viewcontroller segue performSegueWithIdentifier
zusammen mit prepareForSegue
mit einem einzigen Antippen mit.
Im folgenden Code, wenn ich den „Tap-Code zu erhöhen Höhe von Tableview Zelle“ Kommentar-Code, kann ich doppelt tippen erkennen. Andernfalls erhöht der einzelne Tap die Höhe, wenn der Code im didSelect-Block ist.
Was ich brauche: Auf Einzel Hahn, Zellenhöhe erhöht oder Abnahme. Während die Zellenhöhe erhöht wird, wenn ich tippen verdoppeln, sollte es Zellendaten zum nächsten UIViewController
segue.
Wenn nicht, der einzelne Hahn soll die Höhe erhöhen oder verringern. Und doppelt tippen sollen Zellendaten zum nächsten UIViewController
-Code Segue als unten:
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")
}
Die andere Art und Weise kann ich es Arbeit ist, wenn ich NSIndexPath
von ausgewählter Zelle außerhalb des didSelectRowAtIndexPath
Code bekommen, ich kann grundsätzlich den Doppeltipp nutzen, um sonst die gewünschte Aktion zu bekommen. Können Sie NSIndexPath
außerhalb der Standardblöcke von tableView abrufen?
können Sie übergeben Sie Zelle Objekt mit Stellvertreter und finden Sie den Indexpfad mit: NSIndexPath * indexPath = [self.tableView indexPathForCell: Zelle]; – Mohamad