So lassen Sie den Benutzer Abschnitte in einer UITableView neu anordnen

Apollo Grace

Ich arbeite an einer App mit Aktien, die in Portfolios angeordnet sind. Dies passt also natürlich zur Tabellenansicht, und ich arbeite an der Bearbeitungsinteraktion. Es ist einfach genug, dem Benutzer das Hinzufügen oder Löschen von Aktien zu ermöglichen, sie innerhalb eines Portfolios oder in ein anderes Portfolio zu ziehen, aber eine Sache, die ich nicht ordnungsgemäß tun konnte, ist, den Benutzer ein Portfolio über oder unter ein anderes ziehen zu lassen.

Ich habe gerade eine Hacky-Lösung, bei der Zeile 0 jedes Abschnitts der Portfolio-Name ist. Wenn diese Zeile über ein anderes Portfolio gezogen wird, wird die gesamte Tabelle mit den vertauschten Portfolios neu geladen. Das funktioniert, fühlt sich aber nicht sehr natürlich an.

Ich bin sicher, dass ich nicht der erste bin, der auf dieses Problem stößt. Hat jemand eine verfeinerte Lösung?

Eine verwandte Frage: Wie kann ich Benutzern erlauben, ein neues Portfolio / einen neuen Abschnitt zu erstellen?

michaelsnowden

Kinderleicht:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
{
    NSMutableArray *_data;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    _data = [NSMutableArray arrayWithObjects:@"One", @"Two", @"Three", nil];
    self.tableView.editing = YES;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _data.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"reuseIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                      reuseIdentifier:identifier];
    }
    cell.textLabel.text = _data[indexPath.row];
    cell.showsReorderControl = YES;

    return cell;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleNone;
}

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
    [_data exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row];
}

@end

BEARBEITEN:

Was Sie jetzt gefragt haben, ist etwas komplizierter. Ich habe ein Beispiel erstellt, in dem Tabellen in Zellen eingefügt werden, wodurch verschachtelte Zellen angezeigt werden. Das Beispiel ist sehr unattraktiv, aber es funktioniert, und es gibt keinen Grund, warum Sie es nicht hübsch aussehen lassen können. Probieren Sie es aus:

https://github.com/MichaelSnowden/TableViewInCell

Wenn das bei Ihnen nicht funktioniert, versuchen Sie, es UITableView moveSection:(NSInteger) toSection:(NSInteger)hübsch aussehen zu lassen. Die Dokumentation für diese Methode finden Sie hier .

Meine Erfahrung mit der oben genannten Methode war, dass sie sehr einfach zu bedienen ist und gut aussieht, wenn sie aufgerufen wird. Eine clevere Möglichkeit wäre, Header mit Tippgestenerkennern zu erstellen. Markieren Sie beim ersten Tippen diesen Abschnitt und zeichnen Sie diesen Indexpfad auf. Rufen Sie beim zweiten Tippen die Methode für die beiden Indexpfade auf. Es sollte gut funktionieren, aber Sie werden kein Drag & Drop davon bekommen.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Abschnitte in UITableView neu anordnen

Laden Sie Abschnitte in UITableView neu

So lassen Sie den Benutzer Daten in eine Datei herunterladen

So lassen Sie den Benutzer die Breite eines Rahmens ändern

So lassen Sie den Benutzer keine Zahlen in das Textfeld eingeben

So speichern Sie den Benutzer in einer Sitzung

So erstellen Sie eine Javafx-Speicherung, lesen Informationen aus einer Textdatei und lassen den Benutzer ihre Informationen bearbeiten

So fügen Sie einer Leinwand ein Standardbild hinzu, lassen den Benutzer aber auch sein eigenes Bild laden load

Lassen Sie den Benutzer wählen, ob er das Spiel neu starten möchte oder nicht

Lassen Sie den Benutzer den Dateityp auswählen, während Sie eine Datei in einer Webanwendung speichern

So lassen Sie den Argumentnamen in einer Struktur weg

Gleiche Abschnitte in einer Ansicht in xcode anordnen

Firebase - Lassen Sie sich in Benutzerdetails signieren und melden Sie den Benutzer in einer anderen Aktivität ab

So lassen Sie Benutzer mehrere Zeilen eingeben

So fügen Sie mehrere Abschnitte in uitableView in schnellen 4 . hinzu

So übergeben Sie den aktuell angemeldeten Benutzer in einer Formularklasse in Django

So lassen Sie den Benutzer in Select2 eine leere Zeichenfolge auswählen

So lassen Sie den Benutzer vor dem Herunterschieben zwei Sekunden lang schweben

So lassen Sie den Benutzer in Android aus der Multiple-Choice-Zeile auswählen

So lassen Sie den Benutzer die Zip-Datei mit dem Vaadin-Datei-Downloader herunterladen

So lassen Sie den Benutzer mit Identity Framework 1.0 mit doppeltem Benutzernamen registrieren

So pausieren Sie das Python-Skript und lassen den Benutzer das Linux-Terminal eingeben

Abschnitte in einem kostenlosen WordPress-Theme neu anordnen

Lassen Sie den Benutzer im Einstellungsbildschirm aus einer Reihe von Zahlen auswählen

Wie wähle ich den ausgewählten TabBarController-Index aus, wenn mehr als 5 Elemente in der Registerkartenleiste vorhanden sind und der Benutzer sie neu anordnen kann?

Werte in einer Tabelle neu anordnen

Elemente in einer Tabelle neu anordnen

Zahlen in einer Zeichenfolge neu anordnen

So lassen Sie Ihren Bot-Benutzer mit Slack Bot mit einer einfachen Hilfemeldung antworten