IOS中使用.xib文件封装一个自定义View
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的更多相关文章
- 使用xib封装一个自定义view的步骤
使用xib封装一个自定义view的步骤 1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView) 2> 新建一个MJAppView.xib文件来描述MJAppVi ...
- Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)
当前位置: > Swift新手入门 > Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 时间:2014-09-10 16:49来源:未知 作者:啊成 举报 点击:5 ...
- IOS中获取各种文件的路径介绍及方法
IOS中获取各种文件的目录路径的方法 技术交流新QQ群:414971585 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. docum ...
- IOS中获取各个文件的目录路径的方法和NSFileManager类
转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...
- 在iOS中怎样创建可展开的Table View?(下)
接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...
- iOS 中使用 XIB 自定义cell 的两种方法 以及 编译出现常见 的错误 ++++(xcode6.0之后)
一. 注册cell 1.创建自定义cell并勾选 xib :(勾选xib就会自动生成与cell文件关联的xib) 2.在 tableViewController里注册自定义Cell (或者遵守tabl ...
- iOS 中使用 XIB 自定义cell的两种方法以及编译出现常见 的错误 (xcode6.0之后)
一. 注册cell 1.创建自定义cell并勾选 xib :(勾选xib就会自动生成与cell文件关联的xib) 2.在 tableViewController里注册自定义Cell (或者遵守tabl ...
- 转载 -- iOS中SDK的简单封装与使用
一.功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果.下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个A ...
- iOS中获取各种文件的目录路径的方法
我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344 后面的目录4434-4453A-B453-4AD ...
随机推荐
- 我的开源经历:为了方便处理三方 HTTP 接口而写的 Java 框架
缘起 我以前公司需要在 Java 后台调用许多第三方 HTTP 接口,比如微信支付.友盟等等第三方平台. 公司内部还有很多服务是用世界最好语言写的,接口自然也只能通过 HTTP 接口来调用.于是日积月 ...
- Web安全常见漏洞修复建议
转载地址:https://security.pingan.com/blog/17.html SQL注入 在服务器端要对所有的输入数据验证有效性. 在处理输入之前,验证所有客户端提供的数据,包括所有的参 ...
- xctf攻防世界——crackme writeup
感谢xctf提供学习平台 https://adworld.xctf.org.cn crackme有壳,脱壳部分见文章: https://www.cnblogs.com/hongren/p/126332 ...
- day94:flask:Jinjia2模板引擎&flask中的CSRF攻击&Flask-SQLAlchemy的创建模型类和基本的增删改查
目录 1.Jinjia2模板引擎 1.Jinjia2加载模板并传递数据到模板中 2.Jinjia2的模板语句 3.模板中特有的变量和函数 4.模板中内置的过滤器 5.自定义过滤器 6.模板继承 2.在 ...
- ABBYY FineReader 14创建PDF文档功能解析
使用ABBYY FineReader,您可以轻松查看和编辑任何类型的 PDF,真的是一款实至名归的PDF编辑转换器,您知道的,它能够保护.签署和编辑PDF文档,甚至还可以创建PDF文档,本文和小编一起 ...
- 从这三方面优化你的电脑,保持Mac运行流畅
使用着Mac系统的用户都知道,Mac OS的各方面性能都很好,特别是流畅性,有人说不用清理垃圾也能流畅地使用Mac,但这的确是夸张了.电脑使用的时间长了,它的性能总会越来越退步,这其中有着系统垃圾拖累 ...
- Redis多线程原理详解
本篇文章为你解答一下问题: 0:redis单线程的实现流程是怎样的? 1:redis哪些地方用到了多线程,哪些地方是单线程? 2:redis多线程是怎么实现的? 3:redis多线程是怎么做到无锁的? ...
- 这可能是项目中最实用的java8示例了,还不来看?
一.组成及特点 数据源.中间操作.终端操作 流只能使用一次 并行流 和 串行流 二.可以产生流的数据源 集合.文件 三.中间操作 字符串操作拼接joining(""),底层实现是 ...
- Django踩坑记录3
路径如下: admin.py的代码: from django.contrib import admin from sign.models import Event,Guest # Register y ...
- nginx proxy_pass参数配置带不带‘/’
1. proxy_pass 配置的url后面,不加'/',那么重定向后,追加location后的路径.比如server_name: 10.9.11.225location /proxy1/{proxy ...