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

部署目标低于15.0时UIButton清掉Attribute Inspector的title仍显示Button如何解决

可行解决方案

方案1:修改Interface Builder配置(无代码改动)

  • 打开对应Xib/Storyboard文件,选中存在问题的UIButton
  • 在右侧Attribute Inspector中找到Style配置项,将默认的Plain修改为Default
  • 再次清空Title输入框的内容后重新运行即可

该方案改动最小,适合单个或少量按钮出现问题的场景。

方案2:代码主动清空标题(兼容性最高)

在按钮所在视图控制器的viewDidLoad方法中添加代码主动置空标题:

// Swift 示例
yourButton.setTitle("", for: .normal)
// Objective-C 示例
[self.yourButton setTitle:@"" forState:UIControlStateNormal];

该方案不受Xcode版本、部署目标版本影响,不会出现兼容问题。

方案3:批量修复(适合多按钮场景)

如果项目中存在大量同问题按钮,可以通过Category/Extension全局修复:

// Swift 示例
extension UIButton {
    static func fixIBDefaultTitleBug() {
        guard #available(iOS 15.0, *) else {
            let originalSel = #selector(UIButton.init(coder:))
            let swizzledSel = #selector(UIButton.fix_init(coder:))
            // 此处补充方法交换的实现代码,在App启动时调用该方法即可
        }
    }
    
    @objc private func fix_init(coder: NSCoder) -> UIButton? {
        let btn = self.fix_init(coder: coder)
        btn?.setTitle("", for: .normal)
        return btn
    }
}

注:方法交换存在一定风险,仅建议确认项目需要批量修复时使用。

问题根因说明

该问题是Xcode 13+的Interface Builder兼容缺陷:Xcode 13开始默认给UIButton启用iOS 15新增的Plain样式,当项目部署目标低于iOS 15时,IB会自动降级到旧版按钮实现,但清空Title的操作没有同步写入旧版按钮的title属性,导致保留了默认的"Button"文本。

内容的提问来源于stack exchange,提问作者Akash S Arjun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:15:07