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

1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView)

2> 新建一个MJAppView.xib文件来描述MJAppView内部的结构

3> 修改UIView的类型为MJAppView真是类型

4> 将内部的子控件跟MJAppView进行属性连线

5> MJAppView提供一个模型属性

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

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

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

//

//  MJAppView.h

//  01-应用管理

//

//  Created by apple on 14-3-26.

//  Copyright (c) 2014年 itcast. All rights reserved.

//

#import <UIKit/UIKit.h>

@class MJApp;

@interface MJAppView : UIView

/**

*  模型数据

*/

@property (nonatomic, strong) MJApp *app;

+ (instancetype)appView;

/**

*  通过模型数据来创建一个view

*/

+ (instancetype)appViewWithApp:(MJApp *)app;

@end

//

//  MJAppView.m

//  01-应用管理

//

//  Created by apple on 14-3-26.

//  Copyright (c) 2014年 itcast. All rights reserved.

//

#import "MJAppView.h"

#import "MJApp.h"

@interface MJAppView()

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

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

@end

@implementation MJAppView

//+ (instancetype)appView

//{

//    NSBundle *bundle = [NSBundle mainBundle];

//    // 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)

//    NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil];

//    return [objs lastObject];

//}

//

//+ (instancetype)appViewWithApp:(MJApp *)app

//{

//    MJAppView *appView = [self appView];

//    appView.app = app;

//    return appView;

//}

+ (instancetype)appViewWithApp:(MJApp *)app

{

NSBundle *bundle = [NSBundle mainBundle];

// 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)

NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil];

MJAppView *appView = [objs lastObject];

appView.app = app;

return appView;

}

+ (instancetype)appView

{

return [self appViewWithApp:nil];

}

- (void)setApp:(MJApp *)app

{

_app = app;

// 1.设置图标

self.iconView.image = [UIImage imageNamed:app.icon];

// 2.设置名称

self.nameLabel.text = app.name;

}

@end

使用xib封装一个自定义view的步骤的更多相关文章

  1. IOS中使用.xib文件封装一个自定义View

    1.新建一个继承UIView的自定义view,假设类名叫做 MyAppVew #import <UIKit/UIKit.h> @class MyApp; @interface MyAppV ...

  2. 使用xib封装一个view的步骤

    1.新建一个xib文件描述一个view的内部结构(假设叫做SSTgCell.xib) 2.新建一个自定义的类 (自定义类需要继承自系统自带的view, 继承自哪个类,  取决于xib根对象的Class ...

  3. 自定义控件(视图)2期笔记01:自定义控件之自定义View的步骤

    1. 根据Android Developers官网的介绍,自定义控件你需要以下的步骤: (1)创建View (2)处理View的布局 (3)绘制View (4)与用户进行交互 (5)优化已定义的Vie ...

  4. StoryBoard 加入一个自定义View

    1. 建一个 UIView的子类(MyView.h/MyView.m) 2. 建一个 View类型的XIB 3. 把xib的file‘s owner设为MyView 4. 在.h文件里加上 @prop ...

  5. 使用XIB实现一个简单view

    技术处女贴 欢迎来探讨 转帖请注明出处 http://www.cnblogs.com/andy-zhou/p/4962135.html 微信: @Andy 1. AppDelegate AppDele ...

  6. swift4.2 - 一个自定义view弹框

    import UIKit /* * 注册协议view:没找到 UI原图,咱不实现 */ class JYRegisterProtocolView: UIView { /// 点击同意协议的回调 pri ...

  7. [原] Android 自定义View步骤

    例子如下:Android 自定义View 密码框 例子 1 良好的自定义View 易用,标准,开放. 一个设计良好的自定义view和其他设计良好的类很像.封装了某个具有易用性接口的功能组合,这些功能能 ...

  8. 自定义View(7)官方教程:自定义View(含onMeasure),自定义一个Layout(混合组件),重写一个现有组件

    Custom Components In this document The Basic Approach Fully Customized Components Compound Controls ...

  9. 手把手带你画一个漂亮蜂窝view Android自定义view

    上一篇做了一个水波纹view  不知道大家有没有动手试试呢点击打开链接 这个效果做起来好像没什么意义,如果不加监听回调 图片就能直接替代.写这篇博客的目的是锻炼一下思维能力,以更好的面多各种自定义vi ...

随机推荐

  1. js性能优化的小知识

    避免全局查找 function search() { //当我要使用当前页面地址和主机域名 alert(window.location.href + window.location.host); } ...

  2. 【转载】jQuery插件开发精品教程,让你的jQuery提升一个台阶

    要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...

  3. FastDFS安装、配置、部署

    FastDFS是一个开源的,高性能的的分布式文件系统,他主要的功能包括:文件存储,同步和访问,设计基于高可用和负载均衡,FastDFS非常适用于基于文件服务的站点,例如图片分享和视频分享网站. Fas ...

  4. Apache Spark源码走读之2 -- Job的提交与运行

    欢迎转载,转载请注明出处,徽沪一郎. 概要 本文以wordCount为例,详细说明spark创建和运行job的过程,重点是在进程及线程的创建. 实验环境搭建 在进行后续操作前,确保下列条件已满足. 下 ...

  5. emacs+ensime+sbt打造spark源码阅读环境

    欢迎转载,转载请注明出处,徽沪一郎. 概述 Scala越来越流行, Spark也愈来愈红火, 对spark的代码进行走读也成了一个很普遍的行为.不巧的是,当前java社区中很流行的ide如eclips ...

  6. 浏览器User-agent String里的历史故事

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ...

  7. number_format函数的使用

    <!-- ###:表示传入的价格,2:保留两位小数,'.':用点区分, --> <!-- 该函数只支持1.2.4个参数.不能只写3个参数 --> <span>< ...

  8. 一个很好的Delphi博客

    一个很好的Delphi博客,主人叫万一 http://www.cnblogs.com/del/archive/2011/09/21/2183007.html

  9. 页面瀑布流布局的实现 javascript+css

    先看所谓的瀑布流布局 在不使用瀑布流布局的情况下,当页面要显示不同高度的图片时,会如下面显示 下面的元素总是和最靠近它的元素对齐. 为了使元素能够在我们想要的位置上显示,我们使用绝对定位. 说一下大体 ...

  10. nrf51822-配对绑定实现过程

    关于配对绑定的一些原理内容这里不再重复介绍,看之前的几篇文档,静态密码,动态密码,连接时触发配对就可以了. 配对绑定的内容可能比较难懂,升入的学习需要去看规范,将前面的几篇相关文档看一遍实验一边再去看 ...