Was ist der einfachste Weg, um eine Zeile in einem UitableView mit einer von Benutzer bereitgestellten Zeichenfolge hinzuzufügen?

StackOverflow https://stackoverflow.com/questions/1607743

  •  05-07-2019
  •  | 
  •  

Frage

Ich habe ein einfaches UITableViewController in einem UINavigationController Dadurch wird eine Liste von Zeichenfolgen aus einem Array mit der Standardschaltfläche für Bearbeiten/Fertig auf der rechten Seite der Navigationsleiste angezeigt.

Beim Drücken der Schaltfläche Bearbeiten, die UITableView Animiert korrekt und zeigt die roten Minus -Symbole zum Löschen an. Durch Drücken der Taste Löschen wird die Zeile aus der Tabellenansicht und des Arrays entfernt (implementiert in der tableView:commitEditingStyle:forRowAtIndexPath: Methode der UITableViewController).

Ich möchte nun dem Benutzer erlauben, der Ansicht eine Zeile hinzuzufügen (und die Zeichenfolge dem zugrunde liegenden Array hinzuzufügen), aber ich bin mir nicht sicher, wie ich dies tun soll. Die Verfassungsstil -Methode hat else if (editingStyle == UITableViewCellEditingStyleInsert), aber ich weiß nicht, wie ich den Benutzer dazu bringen kann, die Zeichenfolge einzugeben.

Ich habe den Programmierhandbuch für Tabellenansicht gelesen (genauer gesagt Das Beispiel für das Hinzufügen einer Tabellenansichtszeile), aber das scheint ein ganz neues zu erfordern UIViewController Unterklasse nur, um eine Zeichenfolge vom Benutzer zu erhalten.

Gibt es keinen einfacheren Weg?

War es hilfreich?

Lösung

Das Erstellen eines anderen Ansichtscontrollers wird auf lange Sicht wahrscheinlich der einfachste Weg sein. Sie können es modell durch Anrufe präsentieren

SomeViewController* theViewController = [[SomeViewController alloc] init];
[self presentModalViewController: theViewController animated: YES];
[theViewController release];

Wenn der theviewController bereit ist, wegzugehen, kann er anrufen

[[self parentViewController] dismissModalViewControllerAnimated: YES];

Oder Sie können ein Protokoll für Ihren neuen Ansichtscontroller einrichten, damit Sie Ihren ursprünglichen Ansichtscontroller über die Fertigstellung informieren und einen Wert zurücksenden können

@protocol MyViewControllerDelegate
- (void)myViewControllerDelegate: (MyViewController*)myViewController didFinishWithValue: (NSString*)theString;
@end

MyViewController würde dann eine Delegierte -Eigenschaft haben

@interface MyViewController
{
    id<MyViewControllerDelegate> delegate;
}
@property(nonatomic,assign) id<MyViewControllerDelegate> delegate;
@end

Wenn Sie die Protokollmethode verwenden, übernimmt Ihr ursprünglicher Ansichtscontroller dieses Protokoll und entlässt die modale Ansicht selbst, wenn sie diese Nachricht empfängt.

Ich hoffe, das hilft, es mag zunächst ein wenig kompliziert erscheinen, aber es macht das Sammeln von Daten sehr einfach.

Andere Tipps

Sie können selbst eine UialertView oder eine ähnliche Klasse verwenden. Geben Sie einfach die modale Ansicht an, um die Zeichenfolge anzufordern, die richtigen Rückrufe zu erstellen und dann in Ihre Datenquelle zu platzen.

Sie können auch eine Zelle mit einem UitextView und einem Platzhalter "Tippen zum Bearbeiten" einfügen, dann in den TextView -Rückrufen, entfernen Sie die TextView und zeigen Sie die Zeichenfolge an. Eine weitere Bearbeitung müsste etwas anderes bohren oder etwas anderes tun

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top