从表格视图单元格中删除 UIlabel 文本

Posted

技术标签:

【中文标题】从表格视图单元格中删除 UIlabel 文本【英文标题】:Remove the UIlabel text from table view cells 【发布时间】:2017-03-08 08:38:54 【问题描述】:

我有一个表格视图并为此使用自定义单元格。现在我在我的栏中设置了一个清除按钮。现在点击那个 UIBarButton 我想清除单元格中文本字段内的所有文本。我怎么能这样做..??

  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
  
  

现在单元格包含一个 txtAnswer 作为 UITextField。如何清除txtAnswer的文本字段。

清除字段:

func clearView(sender:UIButton)

   print("Clear Button clicked")



【问题讨论】:

按下“清除”按钮后,您希望dataSource 中的数据发生什么变化?您想保留数据并只清除标签吗? 清除 UIText 字段 问题是问txtAnswer,而不是lblQuestion。为什么下面的答案指的是lblQuestion 【参考方案1】:

以上代码仅适用于可见的单元格。如果在手机中不可见,则单元格值不会被清除。

为此,您需要遍历每个表格视图单元格。我认为这对你来说是一个不错的选择。

    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

                
            
        
    

【讨论】:

【参考方案2】:

你可以获得tableView的所有可见单元格。

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

【讨论】:

删除txtAnswer UITextField..?? 如果你想隐藏,只需使用隐藏属性questionCell.lblQuestion.hidden = true

以上是关于从表格视图单元格中删除 UIlabel 文本的主要内容,如果未能解决你的问题,请参考以下文章

根据表格视图单元格中的内容更改 uilabel 高度

以编程方式动态调整多行 UILabel 和随附的表格视图单元格

从表格视图单元格中收集文本字段文本 (Swift)

自定义大小的表格视图单元格中的 UILabel 中的行数

为啥我不能从情节提要的表格单元格中删除标签?

如何从动态 UITableView 单元格中获取 UILabel 的大小?