一:前言
xib 是iOS 中构建界面的一种方式,apple 推荐的方式是storyboard 的方式,UIStoryBoard 也是一种构建UI的方式。如果使用UIStoryBoard 创建, 在团队协作中通常 会建多个 UIStoryBoard,一个成员维护一个 。因为多个成员 在使用 git或者SVN等版本管理工具过程中 如果只有一个 UIStoryBoard 容易造成冲突。本篇主要介绍 XIB 中对于 自定义的 Object 自定义的 UI空间 如何 通过 IBAction,IBOutlet 等的方式 集成在 XIB 或者 StoryBoard 中。
二: 代码示例
如 DEMO下载地址 所示。在 ViewController 中可以看到 我们并没有用代码设置相关的代理,也没有 新建任何对象 为何在控制台也有相关的console 输出。
1.0 如下图a 所示 xib -> Object 为xib 添加一个自定义的Object
这样 我们拖进去 一个Object,为这个 Object 指定 PropertyClass 这个类。并且重写了该类 的init 方法。发现打印了相关了信息。 说明在xib 中拖入的自定义的对象 xib 会创建相关的类,只是在 xib所属 ViewController 中并没有显示出来而已。
2.0 IBAction 使用
如下图b所示:
如果我们选中 xib 中某个按钮 按住 ctrl 键,指向我们 图A 中拖入的 Object 会出现 如 图C 中的
中的状态 点击 这个方法 。表示如果按钮点击 就会调用这个Object 的methodOne。 因为这个方法是 IBAction 修饰的 。
3.0 IBOutlet 的使用 如图d 所示
IBSlider 中有个PropertySubClassOne 的 IBOutlet 的 属性。我们在XIB中 拖入一个 Object A 设置成 PropertySubClassOne 的。 同样 往 XIB View中 拖入一个 UISlider 设置成 IBSlider 类型。 同样也可以关联
这个Slider 和 A 关联起来 。 而 A中 有 //
@property(nonatomic,weak)IBOutletid delegate; 的同样也可以 如下图e 所示一样 不需要代码设置 关联ViewController
三 总结
诚如demo 中所说
1.0测试 在 XIB 中 嵌套的 自定义的类对象为一个属性会调用
2.0测试 在 XIB 中 自定义的类 作为 UI控件的属性
3.0测试 在 XIB 中 通过 继承等 不同的 子类 子类中 设置代理
需要注意的是 :
4.0测试 在 XIB 中 单例的对象在 XIB Objects 中的使用在单例中会
调用init 对象方法 并不会 调用 类方法 因此会初始化多次 造成不是单例的
对象调用的是 init 方法实验证明 初始化了多次 。 毕竟XIB 中
的OBject 没这么智能。 因为 IB是不能使用 类方法 的。