XCode 9.3拖拽创建Outlet失效问题求助
解决Xcode 9.3中无法为UIImageView创建IBOutlet的问题
我之前在Xcode里也碰到过这种拖拽关联失效的情况,别慌,咱们一步步排查可能的原因,总有一个能解决:
确认拖拽操作和文件关联是否正确
首先得确保你没犯小错误:拖拽UIImageView的时候,是不是直接拖到了ViewController.swift的类代码区域(比如class ViewController: UIViewController { ... }的大括号里面),而不是拖到了注释、import语句或者类外面?另外,一定要确认当前storyboard的ViewController确实关联的是你打开的ViewController.swift——有时候不小心选了其他类,拖拽自然没反应。清理Xcode缓存,解决IB和代码的同步问题
Xcode的DerivedData缓存经常会搞出这种莫名其妙的关联故障,试试这几步:- 先完全关闭你的Xcode项目
- 打开终端,输入下面的命令清理缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重新打开项目,再尝试拖拽UIImageView到代码里创建Outlet
检查storyboard文件是否损坏
如果storyboard的XML代码有问题,也会导致拖拽失效:- 右键点击你的storyboard文件,选择
Open As->Source Code - 看看有没有红色的语法错误提示(比如标签未闭合、属性写错),如果有就修复对应的代码
- 再切换回
Interface Builder - Storyboard模式,重新尝试拖拽
- 右键点击你的storyboard文件,选择
手动创建IBOutlet的备用方案
如果上面的方法都没用,咱们可以绕开拖拽,手动关联:- 在
ViewController.swift的类里手动添加一行代码:@IBOutlet weak var myImageView: UIImageView! - 回到storyboard,选中你的UIImageView,打开右侧的「Connections Inspector」(那个箭头形状的图标)
- 在「Outlets」区域找到
myImageView,把后面的圆形图标拖到storyboard左上角的ViewController黄色图标上,完成关联
- 在
我当时就是靠清理缓存解决的这个问题,你可以挨个试试,应该能搞定。
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

