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有了初步认识。

IOS中使用.xib文件封装一个自定义View的更多相关文章

  1. 使用xib封装一个自定义view的步骤

    使用xib封装一个自定义view的步骤 1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView) 2> 新建一个MJAppView.xib文件来描述MJAppVi ...

  2. Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)

    当前位置: > Swift新手入门 > Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 时间:2014-09-10 16:49来源:未知 作者:啊成 举报 点击:5 ...

  3. IOS中获取各种文件的路径介绍及方法

    IOS中获取各种文件的目录路径的方法 技术交流新QQ群:414971585 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. docum ...

  4. IOS中获取各个文件的目录路径的方法和NSFileManager类

    转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...

  5. 在iOS中怎样创建可展开的Table View?(下)

    接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...

  6. iOS 中使用 XIB 自定义cell 的两种方法 以及 编译出现常见 的错误 ++++(xcode6.0之后)

    一. 注册cell 1.创建自定义cell并勾选 xib :(勾选xib就会自动生成与cell文件关联的xib) 2.在 tableViewController里注册自定义Cell (或者遵守tabl ...

  7. iOS 中使用 XIB 自定义cell的两种方法以及编译出现常见 的错误 (xcode6.0之后)

    一. 注册cell 1.创建自定义cell并勾选 xib :(勾选xib就会自动生成与cell文件关联的xib) 2.在 tableViewController里注册自定义Cell (或者遵守tabl ...

  8. 转载 -- iOS中SDK的简单封装与使用

    一.功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果.下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个A ...

  9. iOS中获取各种文件的目录路径的方法

    我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344 后面的目录4434-4453A-B453-4AD ...

随机推荐

  1. 解决docker镜像无vim

    docker拉取的镜像一般都是ubantu系统 安装vim apt-get update apt-get vim

  2. bootstrap-datetimepicker的两种版本

    1.引入js/css <link rel="stylesheet" th:href="@{/plugin/bootstrap-datetimepicker/boot ...

  3. 【JAVA基础】数组练习案例一

    /* * * 输入5个学生成绩 * 计算出每个成绩与最高分的差距 * 根据差距分配等级 * * */ import java.util.Scanner; public class ArrayTask ...

  4. 有什么好用的Mac数据恢复软件

    对于第一次上手苹果电脑的人来说,使用起来难免有点小难受,因为对苹果电脑操作系统不熟练,发生误删数据的事情也是屡见不鲜. 那么对于这种情况我们该怎么办呢?不用担心,今天小编就为大家推荐一款好用的苹果数据 ...

  5. Luogu P4306 JSOI2010 连通数

    tarjan有向图缩点的基础应用.把原图中某点的连通数转化为反向图中"能够到达某点的个数".缩点后,每个新点的贡献等于 原dcc大小 * f[i] 其中f[i]表示(包括该点自身) ...

  6. redis 客户端

    输入缓冲区: 客户端状态的输入缓冲区用于保存客户端发送的命令请求: typedef struct redisClient{ //... sds querybuf; //... }redisClient ...

  7. rsync单项同步

    配置rsync+inotify实时单向同步 定期同步的缺点: 执行备份的时间固定,延期明显,实时性差 当同步源长期不变化时,密集的定期任务是不必要的(浪费资源) 实时同步的优点: 一旦同步源出现变化, ...

  8. centOs7.5.64之前的操作系统搭建GitLab记录

    GitLab搭建步骤: 1. Install and configure the necessary dependencies (1)yum install curl openssh-server o ...

  9. 第三十九章、PyQt显示部件:OpenGL Widget部件功能简介及使用其显示图片

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 OpenGL Widget部件是一个Op ...

  10. 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析

    老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...