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

Xamarin.iOS中如何定位设置用户定义检查属性失败的UIButton

报错原因

该报错的本质是你在Storyboard中给某个UIButton配置了名为localizedText的用户定义运行时属性(User Defined Runtime Attributes),但系统原生UIButton类本身没有localizedText这个属性,触发了KVC赋值失败。报错中的内存地址是运行时生成的实例地址,确实无法在静态的Storyboard源码中检索到,不需要以内存地址为排查依据。
该问题通常出现的场景为:你之前将该按钮设置为带localizedText属性的自定义子类,后续改回原生UIButton时没有删除之前配置的用户定义运行时属性。

定位出错UIButton的方法

方法1:可视化界面排查(最简便)

  • 打开项目中的目标Storyboard文件,切换到可视化编辑界面
  • 点击左侧文档大纲(Document Outline)顶部的搜索框,输入UIButton筛选出当前Storyboard中所有的按钮组件
  • 逐个选中按钮,打开右侧检查器面板的「身份检查器」(Identity Inspector,第三个带身份证图标的标签页)
  • 下拉到面板底部的「用户定义运行时属性」区域,只要找到任意一个按钮的属性列表里存在Key为localizedText的条目,就是出错的组件
  • 直接删除该无效属性条目即可解决报错

方法2:检索Storyboard源码定位

  • 右键点击Storyboard文件,选择「Open As -> Source Code」打开底层XML源码
  • 直接检索关键词localizedText,所有匹配的条目都是配置了该无效属性的控件,对应的XML节点会标注控件ID、所属页面等信息,可以直接定位到对应按钮
  • 删除匹配到的<userDefinedRuntimeAttribute>节点即可

方法3:运行时断点定位(前两种方法无法找到时使用)

  • 打开Xcode断点导航器,添加一个「Symbolic Breakpoint」
  • 符号设置为-[NSException raise]
  • 运行项目,触发报错时会自动断住,此时在lldb控制台输入po 0x14dd3dc40(替换为你报错中的实际内存地址),可以打印出该按钮的额外标识信息,比如所属页面、restoration ID、 accessibility identifier等你提前配置的标识,即可对应到具体按钮

内容的提问来源于stack exchange,提问作者Cliffhanger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:09:03