- Model类进行了数据的封装
- .m文件里面
#import "ZYApp.h"@implementation ZYApp//封装数据 + (NSArray *)apps{ return [NSArray arrayWithContentsOfFile: [[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil]];}@end
View界面类
在xib里面,我们存放了几个控件:
当然我们这里面的控件,可以拖进行就行。
- 但是连线的时候,必须要注意一点,选择你得这个xib属于哪个类来进行管理
- 实现方式是将xib文件的class属性修改为当前自定义的appView类,这样xib文件的类型就是我们所自定义的appView类型,也就可以进行控件的连线了。
在.h文件中:
#import <UIKit/UIKit.h>@interface ZYAppView : UIView+ (instancetype)appView;@property(nonatomic,strong)NSDictionary *dict;@end
.m文件中
#import "ZYAppView.h"@interface ZYAppView()@property (weak, nonatomic) IBOutlet UIImageView *iconVIew;@property (weak, nonatomic) IBOutlet UILabel *nameLbl;@end@implementation ZYAppView//类方法创建对象+ (instancetype)appView{ return [[[NSBundle mainBundle]loadNibNamed:@"ZYAppView" owner:nil options:nil]lastObject];}//给子控件赋值- (void)setDict:(NSDictionary *)dict{ _dict = dict; _iconVIew.image = [UIImage imageNamed:dict[@"icon"]]; _nameLbl.text = dict[@"name"];}@end
这里一定要注意:使用loadNibNamed后面的参数,不能加后缀。
在ViewController中- 实现懒加载:
@interface ViewController ()@property(nonatomic,strong)NSArray *apps;@end@implementation ViewController//懒加载- (NSArray *)apps{ if (_apps == nil) { _apps = [ZYApp apps]; } return _apps;}
数据加载的方式:
1.开始就加载当前应用程序中需要的所有数据
- 占据内存空间,但是需要使用数据随时进行操作,效率高
2.需要使用的时候才进行加载
- 节省内存空间,但是需要使用数据的时候需要重新进行数据的获取,效率降低——懒加载——延迟加载
- 实现方式:
- 重写对象的getter方法,因为使用一个对象的时候需要调用
- (void)viewDidLoad { [super viewDidLoad]; CGFloat padding = 20; CGFloat appViewWidth = 100; CGFloat appViewHight = 105; for (int i = 0 ; i<self.apps.count; i++) { CGFloat appViewX = padding + (padding + appViewWidth) * (i %col); CGFloat appViewY = padding + (padding + appViewHight) * (i / col); //创建子类appView ZYAppView *appView = [ZYAppView appView]; //设置子类frame值 appView.frame = CGRectMake(appViewX, appViewY, appView.frame.size.width, appView.frame.size.height); //给子类得控件 赋值 appView.dict = self.apps[i]; [self.view addSubview:appView]; }}@end
使用MVC的好处在于,分工合作,各司其职,好处多多。
效果图:
- 注意事项:
- 通过自定义的appView返回的view不再是UIView类型,而是自定义类的类型
- 控件器只做两个事件:获取view 赋值
- 子控件的连线可 在类扩展中实现,这样更安全
- 使用自定义的类描述xib文件,一定要将xib文件的class属性修改为自定义的类,否则不能进行连线。
版权声明:本文为博主原创文章,未经博主允许不得转载。