Letzte Row aus der UITableView löschen

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

  • Letzte Row aus der UITableView löschen

    Hallo zusammen,

    nach etwas längerer Zeit beim programmieren meiner App stehe ich nun kurz vor dem Ende der Programmierung. Doch es gibt ein letztes Problem, welches ich einfach nicht gelöst bekommen und hoffe das hier mir jemand helfen könnte.
    Ich programmiere zur Zeit einen kleinen Musikplayer und habe eine Playlist (UITableView) welche ich mit Daten aus einer MPMediaItemCollection füttere. Aus dieser Playlist lassen sich die Titel (rows) per Swipe löschen, dies klappt auch wunderbar außer halt das löschen der letzten row. :cursing:
    In meiner commitEditingStyle Methode mache ich folgendes:

    Quellcode

    1. if (editingStyle == UITableViewCellEditingStyleDelete) {
    2. LeikeMusicplayerMainViewController *mainViewController = (LeikeMusicplayerMainViewController*) self.delegate;
    3. int y = 0;
    4. [songArray removeAllObjects];
    5. for (int i = 0; i < [mainViewController.ausgewaelteListe.items count]; i++) {
    6. MPMediaItem* mediaItem = (MPMediaItem*)[mainViewController.ausgewaelteListe.items objectAtIndex:y];
    7. y++;
    8. [songArray addObject:mediaItem];
    9. }
    10. [songArray removeObjectAtIndex:indexPath.row];
    11. if (songArray.count <= 0) {
    12. he = 1;
    13. Wird aufgerufen wenn songArray keine Titel mehr enthält und somit auch nicht mehr die MPMediaItemCollection, welche für das füllen der Tabelle zuständig ist füllt.
    14. } else {
    15. Hier füge ich die neue Anzahl der Items im Array zu meiner Collection hinzu und aktualisiere die Tabelle
    16. mainViewController.ausgewaelteListe = [[MPMediaItemCollection alloc] initWithItems:songArray];
    17. he = 0;
    18. }
    Alles anzeigen


    Wie also kann ich die letzte Row löschen? Man kann die Collection leider nur füllen wenn der Array mindestenz ein Titel enthällt. Da die Collection immer 1 Titel behalten wird da ich diese nicht überschreibe mit 0, bleibt immer 1 Eintrag in der Tabelle, welche gelöscht werden soll.

    Wäre super wenn jemand helfen könnte!

    Vielen Dank

    Grüße
  • Ich glaube, ich verstehe nicht.

    C-Quellcode

    1. // Schmeiß jedes einzelne Objekt aus dem eigenen Array
    2. [songArray removeAllObjects];
    3. // Füll das eigene Array mit jedem einzelnen Objekt der 'Gewählt'-Liste
    4. // Ich kürz das Ganze mal ab:
    5. self.songArray = [[[mainViewController ausgewaelteListe] items] mutableCopy];
    6. // Schmeiß ein einzelnes Objekt aus dem eigenen Array
    7. [songArray removeObjectAtIndex:indexPath.row];

    Bist du sicher, dass du das so willst?

    Vermutlich wäre es sinnvoller, du reichst die Dinge an deine gewählte Liste weiter.
    Also irgendwas wie [mainViewController deleteSelectedListObject:[songArray objectAtIndex:indexPath.row]];

    Naja, jedenfalls wirfst du wie geschrieben mit [songArray removeAllObjects] jedes Objekt weg, auch das letzte.
    Deinen Punkt "Man kann die Collection leider nur füllen wenn der Array mindestenz ein Titel enthällt" verstehe ich nicht, da ich jede Collection füllen kann, egal wie viele oder wenige Objekte sie enthält.
    Vermutlich liegen da also noch mehr Probleme begraben. :)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Vielen dank für die Antworten.

    Ich habe meinen Code entsprechend gekürzt und ein wenig umstrukturiert und nun klappt es auch wie gewollt.
    Zu dem Punkt mit "Man kann die Collection leider nur füllen wenn der Array mindestens ein Titel enthält" kann ich nur sagen, dass ich eine Fehlermeldung immer dann erhalte wenn mein Array 0 Objekte hat und ich eine Collection mit einem "leeren" Array füllen möchte.
    Allerdings ist dies nun nebensächlich und ich habe mein Problem lösen können, vielen vielen Dank!

    Gruß