mac/iOS开发之storyboard与控制器连线多对一
macOS和iOS开发中使用Storyboard或xib搭建界面使程序员开发速度和效率有了极大的提升。相对于使用纯代码开发,无论是独立开发和团队开发,个人都比较倾向于使用storyboard,没错是storyboard不包含xib。曾经一直觉得纯代码开发高大上,当熟悉storyboard开发后,无论是在公司开发软件还是自己做独立应用程序,感觉完全离不开它,开发效率成倍的提高,也特别节约时间。
顺便安利个资料群,黑客攻防技术,面试宝典,开发进阶都有,挺方便的QQ资料群707641720
在开发中,macOS/iOS会经常用到storyboard与控制器连线,其中控件与控制器一对一连线很简单,大家都知道,但如何使用Interface Builder Outlet / Action 多对一连线呢,比如多个UILabel共同使用一个IBOutlet对象,或者说多个UIButton公用一个IBAction响应事件?
![](https://upload-images.jianshu.io/upload_images/14043969-3944df16694c26e1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/640/format/webp)
如上图所示,如果使用的是Swift语言开发,只需@IBOutlet与一个UILabel数组即可与多个UILabel相连接,由于平常可能会需要获取多个对象,但又不愿意一个一个连线,使用此种方法非常方便通过创建Model一并修改多个对象属性的值。但在使用Objective-C语言开发中,需使用IBOutletCollection(id)与多个控件相连,如下图所示:
![](https://upload-images.jianshu.io/upload_images/14043969-4cac693bf0d9761a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/640/format/webp)
OC连线中IBOutlet常用,但IBOutletCollection却并不为多数人所知,对于喜欢偷懒的程序员来说,搭配IBOutletCollection可以事半功倍。
@property (strong, nonatomic) IBOutletCollection(id) NSArray<UILabel *> *labelArray;
除了IBOutlet多对一以外,还有就是IBAction多对一。在应用程序开发中,IBAction多对一非常方便开发者将操作event差不多的控件写在一个响应方法里面。之前在开发一款mac播放器SBPlayer时,其中切换颜色的9个不同颜色按钮点击目的无非是给某以代理方法传不同的NSColor,通过将9个按钮的IBAction连接在同一个事件上,在代码量非常少的情况下,便实现了个人想要的功能。如下图IBAction在Swift语言下的连接方法:
![](https://upload-images.jianshu.io/upload_images/14043969-1b2512f0f6ab9c67.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/640/format/webp)
Objective-C中使用IBAction多对一和Swift语言类似。
对于正准备上手或已经上手storyboard的开发者来说,熟练使用IBAction和IBOutlet多对一连接相信会是如虎添翼!
顺便安利个资料群,黑客攻防技术,面试宝典,开发进阶都有,挺方便的QQ资料707641720
图文来源于网络,如有侵权请联系小编删除