Storyboard容器视图内为TextView关联Outlet报错求助
解决容器视图中TextView关联Outlet引发的NSUnknownKeyException错误
这个问题我之前帮别人排查过好多次,核心就是Outlet关联到了错误的视图控制器上!
你看报错信息里提到 <SaisieVocale 0x13d929f50> setValue:forUndefinedKey:,说明系统尝试给主视图控制器SaisieVocale设置一个叫mavariablename的属性,但这个控制器里根本没定义这个属性——原因很简单:你把容器视图里的TextView的Outlet直接关联到了主控制器上,但容器视图本质是用来嵌入子视图控制器的,这个TextView其实属于容器对应的子控制器,根本不是主控制器的管辖控件。
给你一步步的修复方案:
先定位容器视图对应的子控制器
在Storyboard里选中你的容器视图,查看右侧面板的Segue信息,找到它的Embed Segue对应的子视图控制器(比如可能是一个叫MyContainerVC的类)。删除错误关联,重新创建正确的Outlet
- 选中主视图控制器
SaisieVocale,打开右侧的Connections Inspector(那个插头样式的图标),找到mavariablename这个Outlet,点击旁边的叉号彻底删除关联; - 找到容器对应的子控制器,打开它的代码文件(比如
MyContainerVC.cs); - 回到Storyboard选中那个TextView,按住Ctrl键拖到子控制器的代码里,重新创建名为
mavariablename的Outlet。
- 选中主视图控制器
最后验证修复效果
重新编译运行应用,这次系统会把Outlet关联到正确的子控制器上,就不会再抛出NSUnknownKeyException错误了。
额外提醒:容器视图的核心作用就是嵌入独立的子控制器,所以容器内的所有控件都应该归子控制器管理,不能直接和主控制器做Outlet关联,不然就会出现这种找不到属性的典型错误。
内容的提问来源于stack exchange,提问作者Entretoize
相关产品推荐
相关产品推荐

