2017-03-08 5 views
1

i Haben Sie eine Tabellenansicht und verwenden Sie benutzerdefinierte Zellen dafür. Jetzt habe ich einen klaren Knopf in meiner Bar gesetzt. Jetzt klicke ich auf den UIBarButton, um den ganzen Text innerhalb des Textfelds in den Zellen zu löschen. Wie kann ich das machen..??Entfernen Sie den UIlabel-Text aus Tabellensichtzellen

var DataSource = [NewAssessmentModel]() 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return self.DataSource.count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let model = self.DataSource[indexPath.row] 


    switch(model.assessmentControlType) 
    { 
    case .text: 
     let cell = (tableView.dequeueReusableCellWithIdentifier("QuestionWithTextField", forIndexPath: indexPath) as? QuestionWithTextField)! 
     cell.model = model 
     cell.indexPath = indexPath 
     cell.txtAnswer.delegate = self 
     cell.lblQuestion.text = model.labelText 
     cell.indexPath = indexPath 

     return cell 
    } 
    } 

Jetzt Zelle enthält eine TxtAntwort als UITextField. Wie kann ich die Textfelder von txtAnswer löschen?

zum Löschen der Felder:

func clearView(sender:UIButton) 
{ 
    print("Clear Button clicked") 


} 
+0

Nachdem Sie auf die Schaltfläche "Löschen" geklickt haben, was möchten Sie mit den Daten in 'dataSource' machen? Möchten Sie die Daten behalten und nur Etiketten löschen? – Eendje

+0

löschen Sie das UIText Feld – Sam

+0

Die Frage lautet 'txtAntwort', nicht' lblQuestion'. Warum beziehen sich die Antworten unten auf 'lblQuestion'? – chengsam

Antwort

1

Sie können alle sichtbaren Zelle von Tableview erhalten.

@IBAction func deleteText(_ sender: Any) { 
    for cell in tableView.visibleCells { 
     if let questionCell = cell as? QuestionWithTextField { 
     // Hide your label here. 
     // questionCell.lblQuestion.hidden = true 
     } 
    } 
} 
+0

löschen Sie das txtAnswer UITextField .. ?? – Sam

+0

Wenn Sie ausblenden möchten, verwenden Sie einfach die versteckte Eigenschaft 'questionCell.lblQuestion.hidden = true' –

+0

danke, es hat funktioniert – Sam

2

Der obige Code gilt nur für die Zellen, die visible.The Zellenwerte sind, werden nicht gelöscht werden, wenn sie nicht sichtbar im Telefon ist.

Dazu müssen Sie durch jede Tabellenansicht Zellen durchlaufen. Ich denke, das ist die eine gute Option für Sie.

func clearView(sender:UIButton) 
    { 
     print("Clear Button clicked") 
     for view: UIView in tableView.subviews { 
      for subview: Any in view.subviews { 
       if (subview is UITableViewCell) { 
        let cell = subview as? UITableViewCell 
        // do something with your cell 

        if let questioncell = cell as? QuestionWithTextField 
        { 
         questioncell.txtField.text = "" 
        } 

        // you can access any cells 

       } 
      } 
     } 
    } 
Verwandte Themen