xib的应用场景:
Xib是用来描述局部的软件界面的,要求要描述的界面的子控件相对于父控件的位置要固定不变,并且加载Xib时,最终得到的是一个数组,这个数组表示的是我们这个Xib文件中有多少个界面,一般情况下,为了简便,我们的Xib文件中都只放一个界面,这样以便于可以通过返回的数组的 lastObject和firstObject拿到它(因为文件里面就是它一个),但是要给Xib里面的子控件设置数据的话,可以有两种方法:
#import <UIKit/UIKit.h>
@class Flag;
@interface FZFlagView : UIView
@property(nonatomic, strong) Flag *flag;
+ (instancetype)flagView;
@end
#import "FZFlagView.h"
#import "Flag.h"
@interface FZFlagView ()
@property (weak, nonatomic) IBOutlet UILabel *nameView;
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@end
@implementation FZFlagView
// 加载xib的类方法
+ (instancetype)flagView
{
return [[[NSBundle mainBundle] loadNibNamed:@"FZFlagView" owner:nil options:nil]
firstObject];
}
// 重写模型Flag的setter方法
- (void)setFlag:(Flag *)flag
{
_flag = flag;
self.nameView.text = flag.name;
self.iconView.image = [UIImage imageNamed:flag.icon];
}
@end