UITableView sprunghaft beim Scrollen, nachdem die Zellenhöhe geändert wurde

So habe ich eine tableView, in der ich die Höhe einer Zelle ändern möchte, wenn ich auf sie tippe. Nun, eigentlich ersetze ich es durch eine größere Zelle. Beim Tippen rufe ich an:

tableView.beginUpdates()
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
tableView.endUpdate()

Und dann ändere ich meincellForRowAtIndexPath, um die richtige neue Zelle und Höhe zurückzugeben. Die Höhe der Zelle wird automatisch berechnet, indem @ überschrieben wirsizeThatFits in der Implementierung der Zelle:

override func sizeThatFits(size: CGSize) -> CGSize {
    return CGSizeMake(size.width, myHeight)
}

Das Scrollen nach unten ist in Ordnung, aber wenn ich nach oben scrolle, springt die Tabelle jede Sekunde um etwa 5 Pixel, bis ich oben angekommen bin. Nachdem ich oben am Tisch angekommen bin, ist das Problem behoben und es wird nicht mehr in beide Richtungen gesprungen. Irgendeine Idee, warum das passiert? Ich stelle mir vor, es hat etwas mit der neuen Zellenhöhe zu tun, die die anderen Zellen verdrängt, aber ich kann nicht verstehen, warum sich die tableView nicht darum kümmert. Jede Hilfe wird gebeten!

Vielen Dank

EDIT: Code von cellForRowAtIndexPath hinzugefügt:

 if self.openedCellIndex != nil && self.openedCellIndex == indexPath {
     cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as ListCell
     (cell as ListCell).updateWithDetailView(dayViewController!.view)
 } else {
     cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as ListCell
     (cell as ListCell).updateWithData(eventDay: store.events![indexPath.row], reminderDay: store.reminders![indexPath.row])
 }
 return cell

Antworten auf die Frage(2)

Ihre Antwort auf die Frage