Ich habe herum gespielt versuchen, Inhalte meiner Tableviewcell zu animieren, wenn es ausgewählt ist, aber ich habe Probleme. Ich hatte einige Orte gelesen, an denen man innerhalb von didSelectRowAtIndexPath keine Animation ausführen kann, oder zumindest animiert es sie nicht. Es scheint der Fall zu sein mit dem Code, den ich unten habe, die Ansicht bewegt sich, aber nicht animiert.Swift - Animieren, wenn TableView-Zelle ausgewählt (didSelectRowAtIndexPath)
Ich habe versucht, Logik in WillDisplayCell zu integrieren, um für die Auswahl aber vergeblich zu überwachen, und so würde ich es lieben, wenn jemand in der Lage ist, die richtige Lösung für mich zu finden, weil die Antwort scheinbar nicht verfügbar ist, trotz viel Suche:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let currentCellDescriptor = getCellDescriptorForIndexPath(indexPath)
let cell = tableView.dequeueReusableCellWithIdentifier(currentCellDescriptor["cellIdentifier"] as! String, forIndexPath: indexPath) as! CustomCell
let indexOfTappedRow = visibleRowsPerSection[indexPath.section][indexPath.row]
if cellDescriptors[indexPath.section][indexOfTappedRow]["isExpandable"] as! Bool == true {
if cellDescriptors[indexPath.section][indexOfTappedRow]["isExpanded"] as! Bool == false {
// INTERESTING BIT: Animates cell contents to Right
if currentCellDescriptor["cellIdentifier"] as! String == "CellHeader" {
UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 12, options: .CurveLinear, animations: {
cell.headerTitleLeftConstraint.priority = 999
cell.headerTitleRightConstraint.priority = 1
cell.layoutIfNeeded()
}, completion: nil)
}
} else if cellDescriptors[indexPath.section][indexOfTappedRow]["isExpanded"] as! Bool == true {
// MARK: Animates cell contents back to left
if currentCellDescriptor["cellIdentifier"] as! String == "CellHeader" {
UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 12, options: .CurveLinear, animations: {
cell.headerTitleLeftConstraint.priority = 1
cell.headerTitleRightConstraint.priority = 999
cell.layoutIfNeeded()
}, completion: nil)
}
}
Warum bist du ‚lassen cell = tableView.dequeueReusableCellWithIdentifier (currentCellDescriptor [ "cellIdentifier"] als String, forIndexPath: indexPath!) Mit wie! CustomCell 'in' didSelectRowAtIndexPath '? – MrDank
Herr Vader, es ist, weil ich einen Plist habe, der alle meine Zelldaten enthält. Es ist viel einfacher, weil ich mehrere kollabierbare Ebenen von Zellen habe. –