1.新建一个继承UIView的自定义view,假设类名叫做 MyAppVew

#import <UIKit/UIKit.h>
@class MyApp; @interface MyAppView : UIView @property(strong,nonatomic) MyApp*app; +(instancetype)appView;
@end

MyAppView.h

#import "MyAppView.h"
#import "MyApp.h" @interface MyAppView () @property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak,nonatomic) IBOutlet UILabel *nameLable; @end @implementation MyAppView -(void)setApp:(MyApp *) app
{
_app=app;
self.iconView.image=[UIImage imageNamed:app.icon];
self.nameLable.text=app.name;
//NSLog(@"%@", app.icon);
} +(instancetype) appView{ NSBundle *bundle=[NSBundle mainBundle];
NSArray *objs=[bundle loadNibNamed:@"AppInfoView" owner:nil options:nil];
return [objs lastObject]; } +(instancetype) appViewWithApp:(MyApp *)app{
MyAppView *appView=[self appView];
appView.app=app;
return appView;
} @end

2.新建一个MyAppVIew.xib文件来描述MyAppView内部结构

3.修改UIView的类型为MyAppView类型

4.将内部的子控件跟MyAppView进行属性连线

5.MyAppView提供一个模型属性

@interface MyAppView ()

@property (weak, nonatomic) IBOutlet UIImageView *iconView;

@property (weak,nonatomic) IBOutlet UILabel *nameLable;

6.重写模型属性的set方法,因为set方法中可以拿到外界传递的模型数据

-(void)setApp:(MyApp *) app
{
_app=app;
self.iconView.image=[UIImage imageNamed:app.icon];
self.nameLable.text=app.name;
//NSLog(@"%@", app.icon);
}

7.把模型数据拆开,分别设置数据到对应的子控件中

8.补充:提供一个创建MyAppView的类方法,将读取的.xib文件的代码屏蔽起来

+(instancetype) appView{

    NSBundle *bundle=[NSBundle mainBundle];
NSArray *objs=[bundle loadNibNamed:@"AppInfoView" owner:nil options:nil];
return [objs lastObject]; } +(instancetype) appViewWithApp:(MyApp *)app{
MyAppView *appView=[self appView];
appView.app=app;
return appView;
}

通过封装数据,对mvc有了初步认识。

最新文章

  1. 每天一个linux命令(35):ln 命令
  2. 几种常用的JS类定义方法
  3. CSS第二天总结 更多的选择符
  4. .className = &quot;highlight&quot;;.setAttribute(&quot;class&quot;, &quot;highlight&quot;);
  5. Asp.net从文件夹中读取图片,随机背景图
  6. codevs4600 [NOI2015]程序自动分析==洛谷P1955 程序自动分析
  7. Nginx + Tomcat 动静分离实现负载均衡(转)
  8. c# 路径空格---ProcessStartInfo参数问题
  9. windows 挂载windows 共享盘为本地磁盘
  10. 深入理解offsetTop与offsetLeft
  11. CSS兼容性常见问题总结
  12. QString ini ;转义符
  13. 自己做个 Tag标签
  14. chapter8_3 c代码和错误
  15. 弹出式菜单(下拉菜单)实现——PopupMenu
  16. CDH版本的oozie安装执行bin/oozie-setup.sh prepare-war,没生成oozie.war?
  17. .Net Core 在Linux服务器下部署程序--(3). 部署.net Core程序
  18. 使用jieba库与wordcloud库第三方库进行词频统计
  19. py3下怎么用StringIO
  20. matplotlib坐标轴的一些操作

热门文章

  1. php批量转换时间戳
  2. 关于ABBYY的常见问题与解答
  3. Java蓝桥杯01——第一题集锦:堆煤球、购物单、哪天返回、第几天、分数
  4. redis面试问题(一)
  5. Docker 指南
  6. jwt介绍
  7. C#.NET 强大的LINQ
  8. 数据库:Flask-SQLAlchemy
  9. SpringCloud 源码系列(3)—— 注册中心 Eureka(下)
  10. 图像处理gamma修正(伽马γ校正)的原理和实现算法