绑定过程
-
先来新建一个自定义的View,继承自
UIView
(必须的了) -
新建一个
xib
文件 在这里,为了更好地识别,我们把这个xib的名字命名成我们之前新建的那个view子类。 -
更改xib的
File's Owner
class,指向我们创建好的class
//关于 IBOutletCollection 的使用
在IB与相关文件做连接时,我们经常会用到两个关键字:IBOutlet和IBAction。经常用xib或storyboard的童鞋应该用这两上关键字非常熟悉了。不过UIKit还提供了另一个伪关键字IBOutletCollection,我们使用这个关键字,可以将界面上一组相同的控件连接到同一个数组中。
我们先来看看这个伪关键字的定义,可以从UIKit.framework的头文件UINibDeclarations.h找到如下定义:
#ifndef IBOutletCollection
#define IBOutletCollection(ClassName)
#endif
- 1
- 2
- 3
从上面的定义可以看到,与IBOutlet不同的是,IBOutletCollection带有一个参数,该参数是一个类名。
通常情况下,我们使用一个IBOutletCollection属性时,属性必须是strong的,且类型是NSArray,如下所示:
@property (strong, nonatomic) IBOutletCollection(UIScrollView) NSArray *scrollViews;
- 1
那么,应该如何创建IBOutletCollection呢?首先确保是一组相同的控件,以UIButton
为例,首先将界面上的一个UIButton拖到代码文件中,不过选择的是outlet collection
,如图:
接下来把其他的UIButton拖到该UIButton的代码区即可。
注意:一定要先把button拖到数组中,然后再命名,顺序不对会崩掉
---- viewcontroller.m 中代码 ----
#import "ViewController.h"
#import "ViewButton.h"
@interface ViewController ()
@property (nonatomic,strong) ViewButton *buttonXJP;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (ViewButton *)buttonXJP
{
if (!_buttonXJP)
{
_buttonXJP = [ViewButton loadFromNib];
}
return _buttonXJP;
}
- (IBAction)btnClick:(id)sender
{
NSLog(@"fdsafdsafsafdasf");
[self.buttonXJP show];
}
//