UITableView(Controller) Editing Mode

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UITableView(Controller) Editing Mode

    In meiner App habe ich einen TableViewController, mit einer TableView, welche im Editing Mode nur ein Reordered Control auf der rechten Seite der TableViewCells anzeigen soll. Der Linke Bereich der TableViewCell soll sich also nicht verschieben, um dort das Delete Control anzuzeigen.

    Es hat etwas gedauert, bis ich dies auf meinem Test Device mit iOS 12.x hinbekommen habe. Ich hatte zuerst die Einstellung "Indent While Editing" im InterfaceBuilder bei der TableViewCell deaktiviert, leider ohne Erfolg. Erst die Ergänzung der Methode shouldIndentWhileEditing in meiner Custom TableViewCell Klasse mit einem return NO brachte den gewünschten Erfolg. Die Zellen rücken links jetzt nicht mehr ein. Weiterhin muss die TableView Delegate Methode tableView:editingStyleForRowAtIndexPath: noch UITableViewCellEditingStyleNone zurück liefern, damit auch das Delete Control nicht mehr angezeigt wird.

    Ich war also nun zufrieden, wenn iOS 13 nicht wäre. Dort werden die Zellen links eingerückt, obwohl dies in iOS 12 nicht der Fall ist. ?(

    Gibt es einen Workaround/Fix, damit die Zeller auch unter iOS 13 links nicht eingerückt werden?

    Update: Ich sehe gerade, dass es eine Table View Delegate Methode tableView:shouldIndentWhileEditingRowAtIndexPath: gibt. Ab iOS 13 scheint bei einer fehlenden Implementierung wohl YES als Default verwendet zu werden und das Ergebnis von shouldIndentWhileEditing bei den TableViewCells wird ignoriert. Ob dies ein Bug in iOS 13 oder von Apple gewollt ist lasse ich jetzt mal dahingestellt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MCDan ()

  • MCDan schrieb:

    Update: Ich sehe gerade, dass es eine Table View Delegate Methode tableView:shouldIndentWhileEditingRowAtIndexPath: gibt. Ab iOS 13 scheint bei einer fehlenden Implementierung wohl YES als Default verwendet zu werden und das Ergebnis von shouldIndentWhileEditing bei den TableViewCells wird ignoriert. Ob dies ein Bug in iOS 13 oder von Apple gewollt ist lasse ich jetzt mal dahingestellt.
    Mist, nun habe ich selber herumprobiert ... und Dein Update erst gelesen, als ich die selbe Lösung posten wollte :D

    Quellcode

    1. - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath
    2. {
    3. return NO;
    4. }
    Apple ist immer wieder für Überraschungen gut...

    Viel Spass weiterhin, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • So, der "Kunde" ist mal wieder wählerisch. Jetzt stört, dass für die Umsortierung ein Reordered Control angezeigt wird und dass man die TableViewCell nicht einfach per Long Press Gesture, wie z.B. in der Wetter App, umsortieren kann.

    Dies scheint von iOS nicht direkt unterstützt zu werden. Ich habe diesbezüglch aber schon ein paar Lösungsansätze im Netz gefunden und wollte mal nachfragen, ob ihr dieses "Custom Feature" schon mal verwendet habt und welcher Lösungsansatz wirklich gut funktioniert?
  • Ich will Dich nicht in den Wahnsinn treiben, aber wäre an der Stelle dann eine UICollectionView mit den entsprechenden Drag-Protokollen sinnvoller? Ich habe zumindest den Eindruck, dass Apple diese sehr pusht und UITableView langfristig das Nachsehen haben... Dann sollte der longTouch-Drag eigentlich Standard sein.

    Bin ja schon still, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.