So erstellen Sie eine Symbolleiste zwischen den Zeilen UITableView
Ich bin interessiert, wie tweetbot hat die folgenden:
Möchte ich das gleiche mit meiner app, wo Sie, wenn Sie auf eine Zeile klicken, es erscheint
eine zusätzliche UIToolBar und drücken Sie auf eine andere Zeile geschlossen wird diese Ansicht mit Animationen.
Die Logik, die ich denke, ist einfach, Sie müssen nur fügen Sie eine Untersicht auf die UITableViewCell auf, wenn Sie gedrückt und verschieben Sie den rest des Inhalts, aber wie tun Sie eigentlich entlassen, wenn ich drücken Sie die andere Zeile?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In
tableView:didSelectRowAtIndexPath:
entfernen Sie die Werkzeug-Ansicht aus dem letzten ausgewählten Zelle. Wenn es keine solchen anzuzeigen, erstellen Sie eine neue. Dann fügen Sie diese Ansicht, um die neu ausgewählte Zelle. Speichern Sie die indexPath der ausgewählten Zeile.In
tableView:heightForRowAtIndexPath:
Sie überprüfen, ob die indexPath ist die gleiche wie die gespeicherte indexPath. Wenn Sie gleich sind, kehren Sie in eine Höhe, die die Höhe der beiden sichten. Wenn es nicht gleich ist, einfach nur wieder die Höhe der "echte Zelle".Alle Ihre Anrufe in
didSelectRowAtIndexPath
zwischen[tableView beginUpdates]
und[tableView endUpdates]
um die Animationen für die Höhe ändern.Der beste Weg, dies zu tun ist, fügen Sie eine dummy-Zelle unterhalb der Zelle, wurde abgehört.
Zuerst müssen Sie, um zu verfolgen, was Zelle ist erschlossen und entsprechend zu handeln.
Wann immer Sie haben, die dummy-Zelle präsentieren, die Sie haben zu stellen Sie sicher, senden Sie die richtige Anzahl.
Auch, wieder die richtige Höhe für Ihre ControlCell.
Schließlich, daran erinnern, die Steuerung der Zelle ist ein dummy. Ist nicht Teil des Modells, so haben Sie zu berücksichtigen. Wenn der Benutzer tippt eine Zeile oberhalb der letzten Zeile getippt ist ok, aber wenn die neue Zeile getippt ist unten, dass die Kontrolle der Zelle, die Sie haben, um sicherzustellen, dass Sie Zugriff auf die richtige Zeile in Ihrem Modell. In anderen Worten, berücksichtigen Sie, dass gefälschte Zelle in der Mitte Ihrer Ansicht.
Ich hoffe, das hilft.
if(self.controlRowIndexPath && [indexPath isEqual:self.controlRowIndexPath])
> return die Zelle, für die Steuerung im Menü. Keinen source-code, sorry. Ich achteten auf die WWDC-session und dachte sich den rest durch trial/error.rjgonzo der code funktioniert gut, außer für den Fall, wo man nur 1 Zeile in dem tableview. Wenn es nur 1 Zeile (und 1 Objekt in der tableview datamodel) erhalten Sie eine NSRange Ausnahme beim aufrufen insertRowsatIndexPath(s). Um dies zu beheben habe ich überprüft, um zu sehen, ob das datamodel hat nur 1 Objekt, und wenn ja, dann füge ich die Zeile an die aktuelle indexpath (statt der controlindexpath), die Ergebnisse in die Zeile logisch, die Hinzugefügt wird, die über der ersten Zeile und dann rufe ich moveRowAtIndexPath zum vertauschen der Zeilen nach dem Aufruf von [self.tableView endUpdates]. Die animation zeigt, wie erwartet, mit der control-Reihe, die nach unten rutschen von der 1. Reihe.
Ich würde nicht fügen Sie eine Untersicht auf eine
UITableViewCell
würde ich hinzufügen, eine weitere Zeile zurUITableView
. So, dieUITableView
kümmern sich um die animation. (Und ich glaube nicht, dass das möglich animierteUITableViewCell
Höhe ändert...)Verwenden Sie einfach
tun, fügen Sie eine Zeile hinzu. Und
um es zu entfernen.
@rjgonzo dies funktioniert gut, aber es gibt ein kleines Problem auf, wie Sie halten die indexPathToDelete. Da ist es nur noch ein Zeiger auf sich selbst.controlRowIndexPath, sobald Sie Sie löschen oder neu zuweisen selbst.controlRowIndexPath, indexPathToDelete nicht, was Sie wollte, und tableView deleteRowsAtIndexPaths:withRowAnimation: call, erhalten Sie eine SIGBART Absturz.
so, statt
und
folgende code sollte funktionieren:
Hier ist, was ich Tue, um die animation zu reinigen.
Neben der Strategie, die Benutzer fluchtpunkt schlägt (das heißt, das hinzufügen einer Untersicht auf die Zelle, die Aktualisierung der Zelle Höhe über heightForRowAtIndexPath, beginUpdates, und endUpdates), ich finde die folgenden Maßnahmen hilfreich sein, mit der animation:
Dieser sauber ist für mich, aber nicht genau wie Tweetbot. Interessanterweise Tweetbot animation scheint das ziehen der toolbar nach unten, wie am unteren Rand der Zelle animiert nach unten. Es scheint so, dass einige zusätzliche animation muss stattfinden, oder meine Verschwörungstheorie ist, dass es tatsächlich Zugabe die Untersichten an den oberen Rand der Zelle unterhalb der ausgewählten Zelle, und dann die Durchführung der Verlängerung und animation auf die Zelle unterhalb.