You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TableViewCell内UIButton点击时默认“Button”文本重现问题求助

解决TableViewCell按钮点击后显示默认“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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:51:29