2017-12-19 10 views
3

Ich habe eine Tabellenansicht (namens B) in einem der Tabellenansicht Controller (benannt A) -Zellen und ich habe eine Schaltfläche in der Tabellenansicht Eine Zelle (mit dem Namen) und in dieser Zelle habe ich Tabellenansicht B und Tabellenansicht B hat eine Schaltfläche (benannt Delete) und Textfeld für jede Zelle, so möchte ich, wenn Benutzer Push-Taste hinzufügen Tabelle anzeigen B neu laden und eine neue Zeile und wenn Benutzer Push-Taste löschen Tabellenansicht B neu laden und entfernen Sie diese Zeile für besseres Verständnis Ich habe ein Video, das Sie sehen können die Verbindung dieser hier https://ufile.io/5x6y1Wie lade ich die Daten in der Tabellenansicht innerhalb der Tableview-Controller-Zelle in swift 4 richtig?

in diesem Video können Sie sehen, was passieren wird und was ich will

und hier ist der Codes zum löschen und hinzufügen-Button in der Haupttabelle Ansichtsklasse tun (Erinnern Sie sich an die Schaltfläche zum Hinzufügen in der Tabellenansicht Eine Zelle (die Zelle für die Tabellenansicht und die Schaltfläche zum Löschen befindet sich in der Tabellenansicht B-Zelle (in jeder Zelle in der Tabellenansicht B, die sich in der Haupttabellenansicht (Tabellenansicht A) befindet))

var certificates = [String]() 
    if self.pf.Licences.count != 0 { 
       for i in 0...self.pf.Licences.count - 1 { 
        print(self.pf.Licences[i].title!) 
          self.certificates.append(self.pf.Licences[i].title!) 
         } 
        } 
        self.tableView.reloadData() 
       } 

@IBAction func deleteCer(_ sender: UIButton) { 

    print("delete") 
    let buttonRow = sender.tag 
    certificates.remove(at: buttonRow) 
    DispatchQueue.main.async { 
     self.tableView.reloadRows(at: [IndexPath.init(row: 0, section: 6)], with: .right) 
    } 
} 

@IBAction func addingCertificate(_ sender: UIButton) { 

    print("add") 
    if certificates.count != 0 { 
     if certificates[certificates.count - 1] != "" { 
      certificates.append("") 
      DispatchQueue.main.async { 
       self.tableView.reloadRows(at: [IndexPath.init(row: 0, section: 6)], with: .bottom) 
       } 
      } 
     } 
     else { 
      print(certificates) 
      certificates.append("") 
      print(certificates) 

      DispatchQueue.main.async { 
       self.tableView.reloadRows(at: [IndexPath.init(row: 0, section: 6)], with: .bottom) 

     } 
    } 
} 
+0

Wo Sie 'für i in 0 ... self.pf.Licences.count - 1' machen, können Sie das vereinfachen' für Lizenz in self.pf.Licences' – MultiColourPixel

+0

Aber wenn ich Lizenz in self.pf benutze. Lizenzen, die ich anstelle von i im self.certificates.append (self.pf.Licences [i] .title!) Verwenden soll –

+0

Sie machen mit dem Schleifenzähler nichts Besonderes, außer dass Sie ihn als Index zum Abrufen von Daten verwenden aus dem Array. Sie haben keine Bedingungen basierend auf dem Index, deshalb können Sie es einfach loswerden und den Vorschlag verwenden, da es Ihnen nur jede Lizenz in Ihrem Licenses-Array geben wird. – MultiColourPixel

Antwort

0

für Ihre Ergänzungen und Streichungen um Sie zu prüfen, arbeiten müssen, wie diese sollten bei https://developer.apple.com/documentation/uikit/uitableview unter dem Abschnitt „Einfügen, Löschen und Verschieben von Zeilen und Abschnitte“ auf einem UITableView erfolgen.

Sie müssen im Wesentlichen insertRows(at:with:) und deleteRows(at:with:) verwenden, während Sie sicherstellen, dass Ihre Datenquelle aktualisiert wird.

Wenn Sie einen Controller irgendeiner Art für Ihre UITableView B haben, sollten Sie vielleicht den Einsatz werden das Senden und Löschen von Nachrichten zu, dass nicht die Mutter UITableView A.

Auf einer anderen Note, wo Sie certificates[certificates.count - 1] Sie verwenden könnte einfach certificates.last verwenden.

Verwandte Themen