2017-10-04 2 views
0

Ich habe eine statische UITableView wie im ersten Bild gezeigt, aber jetzt muss ich eine Zeile mit einem Button hinzufügen, dass, wenn ich berühre eine dynamische Zelle der Tabelle wie im zweiten Bild gezeigt Das Problem ist, dass ich keine neuen Zellen zu einer statischen UITableview hinzufügen kann. Was wäre die beste Vorgehensweise, um dies zu erreichen?Zeile programmgesteuert im statischen UITableView hinzufügen

first image second image

+0

Das heißt, Sie brauchen eine dynamische Tabellenansicht Oder Sie können Eureka verwenden. – Sweeper

Antwort

0

Grundsätzlich statische Tableview soll nicht (außer Zellinhalt) zur Laufzeit geändert werden. Dies wird deutlich in docs:

Verwenden Sie statische Zellen, wenn eine Tabelle nicht das Layout ändert, unabhängig von den spezifischen Informationen angezeigt wird.

In diesem Fall empfiehlt es sich, ein dynamisches Fernsehgerät zu erstellen und mit der entsprechenden Anzahl an Zellen zu füllen. Sie müssen dazu DataSource delegate verwenden. DataSource selbst wird normalerweise über Wörterbücher oder Arrays ausgeführt.

z. du hast ein dict 'phoneNumbers' und einen Button, der einen neuen hinzufügen soll.

Zunächst fügen Sie der Schaltfläche in cellForRowAtIndexPath einen Selektor hinzu: zum Beispiel über ein Tag. Dann Taste Aktion wird so aussehen:

-(void)yourButtonClicked:(UIButton*)sender 
{ 
    [self.phoneNumbers setObject:phoneNumber forKey:numberKey]; 
    [self.tableView reloadData]; 
} 

//Swift 
func yourButtonClicked(sender: UIButton) { 
    self.phoneNumbers["numberKey"] = phoneNumber 
    self.tableView.reloadData() 
} 

(leider ist es Obj-C, aber ich bin ganz sicher, zügig an dieser Stelle nicht viel anders ist)

reload benötigt wird Tableview Layout zu aktualisieren, nachdem Änderungen an DataSource-Objekten werden vorgenommen. Es ist in diesem Fall ziemlich nah an 'neu zeichnen'.

Auf dem Bild von Contacts App zeigte Ihnen Objekt '(555) 555-5555' NSString und Schlüssel ist wahrscheinlich 'andere'. Sie können dieses jede mögliche Weise Sie

mögen, nachdem alle

So verwenden und speichern Sie nur die Einrichtung numberOfRowsInSection müssen: so dass für den Abschnitt, wo Sie wollen Zellen hinzufügen es die Anzahl der Objekte im Wörterbuch phonenumbers gibt

+0

Danke, ich verstehe, wie man den Abschnitt der Telefonzellen macht, aber das ist der beste Weg, um die aktuellen statischen Abschnitte in meiner Tabellenansicht dynamisch zu machen. Vielen Dank! –

+0

Sie müssen die Option 'Inhalt' für TableView in Ihrem XIB/Storyboard Attribute Inspector von 'Statische Zellen' in 'Dynamische Prototypen' ändern. Stellen Sie sicher, dass jeder Zellenprototyp einen eindeutigen Zellidentifikator hat. –

Verwandte Themen