在Xcode中从其他项目复制类并移除关联连接
如何移除IBOutlet关联连接
移除这些IBOutlet关联其实分两步:先断开Interface Builder里的连接(如果当前项目里还有对应的XIB/Storyboard关联的话),再清理代码里的IBOutlet声明,下面是具体步骤:
第一步:断开Interface Builder中的关联(如果适用)
如果你的当前项目里,这些IBOutlet对应的控件还在某个XIB或者Storyboard文件里,先做这一步:
- 打开对应的XIB/Storyboard文件,找到包含这些控件的视图控制器或自定义视图
- 打开右侧的Connections Inspector(快捷键
Cmd+Option+6,就是面板上那个带箭头的图标) - 在Connections Inspector的「Outlets」区域,找到每个要移除的IBOutlet(比如
signHereLabel、clearBtn),点击条目右侧的叉号,直接断开连接 - 或者更直观的方式:在文档大纲里选中对应的控件(比如那个UILabel),右键点击,在弹出的菜单里找到对应的IBOutlet连接,选择「Disconnect」断开
第二步:清理代码中的IBOutlet声明
不管有没有IB关联,代码里的IBOutlet都要删掉:
- 打开你的
SignView.h文件,把所有带有IBOutlet关键字的@property声明全部移除,比如:@property (weak, nonatomic) IBOutlet UILabel *signHereLabel; @property (weak, nonatomic) IBOutlet UIButton *clearBtn; @property (weak, nonatomic) IBOutlet UIButton *doneBtn; @property (weak, nonatomic) IBOutlet UITextField *textfield; @property (weak, nonatomic) IBOutlet SignatureView *signView; @property(strong, nonatomic)IBOutlet UIView *contentV; - 如果
SignView.m文件里有手动添加的synthesize语句对应这些属性,也要一并删掉(不过现在Xcode会自动合成属性,大概率没有这部分)
额外注意事项
- 别忘了检查代码中有没有使用这些属性的地方,比如
[self.clearBtn addTarget:...];或者self.signHereLabel.text = @"Sign here";这类调用,要一起删掉,不然会报编译错误 - 最后可以清理一下项目缓存:按
Cmd+Shift+K(或者顶部菜单Product -> Clean Build Folder),必要时重启Xcode,避免残留缓存导致奇怪的问题
内容的提问来源于stack exchange,提问作者Franz Noel
相关产品推荐
相关产品推荐

