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