2012-04-10 28 views
0

Ich habe viele Beiträge zum Hinzufügen und Löschen von Zellen in der Tabellenansicht gesehen. Was ich will ist, wenn der Benutzer auf die Schaltfläche Hinzufügen in der Zelle klickt, muss er den Benutzer fragen, was er in die Zelle eingeben soll. Dann gibt der Benutzer den Text in die Zelle ein und fügt ihn dann in die Tabellenansicht ein. Kann mir jemand sagen, wie ich das erreichen soll?Neue Tabellenansichtszellen dynamisch hinzufügen

+0

Ich glaube nicht, dass ich den Workflow verstehe. Sie sagen: "Der Benutzer klickt auf die Schaltfläche Hinzufügen in der Zelle" und auch "dann wird es in der Tabellenansicht hinzugefügt". Wenn jedoch eine Zelle eine Schaltfläche enthält, muss sie bereits in der Tabelle enthalten sein. –

+0

Ja. Die Schaltfläche zum Hinzufügen ist bereits in der Zelle mit Standardtext vorhanden. Wenn der Benutzer auf die Schaltfläche "Hinzufügen" klickt, muss der Benutzer in der Lage sein, den Text in dieser Zelle zu bearbeiten. Nachdem der Benutzer den Text in dieser Zelle eingegeben hat, muss eine weitere Zelle mit Schaltfläche "Hinzufügen" und Standardtext hinzugefügt werden. –

Antwort

1

Ich würde die Schaltfläche hinzufügen in der Fußzeile oder Kopfzeile, anstatt in einer Zelle, es ist meine persönliche Meinung, dass die Verwaltung der Zugabe von Zellen einfacher wäre.

Davon abgesehen, wissen nicht genau, was dein Problem ist, wenn Sie Ihren Controller als uitable delegieren, dann können Sie ganz einfach hinzufügen oder Zellen entfernen, indem sie alle relevanten Methoden zugreifen, insbesondere, dass man:

- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleInsert) { 
     // ...... 
    } 
} 

, die durch genannt wird:

[yourTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath ] withRowAnimation:UITableViewRowAnimationAutomatic]; 
0

haben ein Verfahren wie (UITableViewCell *) createNewCellForTableView. Dadurch wird UITableViewCell erstellt und zurückgegeben.

Verwenden Sie in Ihrer CellForRowAtIndexPath diese Methode zum Erstellen aller Zellen für Ihre tableView. Dies muss auf diese Weise geschehen, denn wenn Sie eine [tableView reloadData]; ausführen, muss jedes Mal, wenn Sie eine neue Zelle hinzufügen, neue Zellen erstellt werden.

Schließlich, nachdem Sie neue Zellen erstellen, in der IBAction der ADD Schaltfläche, stellen Sie sicher, dass Sie die TableView neu laden.

~ Eine einfachere Alternative:

Da Sie gerade für den Benutzer suchen Text hinzufügen möchten, können Sie eine textField im UITableViewCell eingebettet haben. Sobald der Benutzer mit der Eingabe fertig ist, können Sie den Text zu dataSource hinzufügen (das Array füllt die tableView) und das TableView neu laden. Stellen Sie sicher, dass Sie den TextField enabled oder disabled haben, wie Sie es wollen. Jetzt

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return numRows; 
} 

in:

0

Dies ist, wie ich es tun und es funktioniert:

erste, eine Instanzvariable wie folgt erstellen:

int numRows = 0; 

die Methode implementieren numberOfRowsInSection wie folgt Meine Anwendung, an einer Stelle verwende ich eine REST-API und bekomme einen JSON, ich aktualisiere den Wert von numRows als numRows = [jsondata count];

Schreiben Sie Ihre Methode cellForRowAtIndexPath so, wie Sie es wünschen würden, wenn Sie den dynamischen Inhalt hätten. In meinem Fall verwende ich zum Beispiel indexPath.row und bereite die Zelle vor und gebe sie zurück. Also, sobald Sie Ihre dynamische Inhalte haben, aktualisieren Sie die Inhalte von numRows

Diese Methode wird nur nennen, wenn die Variable numRows größer als 0 ist, wie ich oben und sofort erklärt rufen die Methode [YourtableView reloadData];