TableViewCell内UIButton点击时默认“Button”文本重现问题求助
问题原因
直接修改titleLabel?.text = ""无法彻底清空按钮标题,因为UIButton的标题是按状态(正常、高亮、选中)管理的,点击按钮时会切换到高亮状态,此时会加载该状态下的默认标题“Button”。
解决方案
通过setTitle(_:for:)方法清空所有状态下的按钮标题,或者至少覆盖正常、高亮、选中这几个常用状态:
1. 代码层面修改(推荐)
在awakeFromNib方法中替换原有的标题设置代码:
override func awakeFromNib() { super.awakeFromNib() // 清空所有状态下的标题 editBtn.setTitle("", for: .allStates) deleteSchedule.setTitle("", for: .allStates) }
如果不需要覆盖所有状态,也可以单独设置常用状态:
editBtn.setTitle("", for: .normal) editBtn.setTitle("", for: .highlighted) editBtn.setTitle("", for: .selected)
2. Storyboard/XIB可视化设置
直接在界面编辑器中选中按钮,在Attributes Inspector里找到“Title”选项,将“Normal”、“Highlighted”等所有状态的标题都改为空字符串。
修改后的完整代码
import UIKit class scheduleCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() // 正确清空按钮标题 editBtn.setTitle("", for: .allStates) deleteSchedule.setTitle("", for: .allStates) } @IBOutlet weak var timeLabel1: UILabel! @IBAction func edit(_ sender: Any) { print("EDIT BTN ") } @IBOutlet weak var timeLabel2: UILabel! @IBOutlet weak var editBtn: UIButton! @IBOutlet weak var deleteSchedule: UIButton! @IBAction func deleteBtn(_ sender: Any) { print("DELETE BTN ") } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) timeLabel1.text = "" timeLabel2.text = "" } }
内容的提问来源于stack exchange,提问作者AbheshekSharma
相关产品推荐
相关产品推荐

