从表格视图单元格中删除 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 文本的主要内容,如果未能解决你的问题,请参考以下文章