xib文件的加载方法
xib文件的加载方法
- 以UITableViewCell的cell为例
- 很多时候因为系统的cell无法满足我们的日常需求,我们都会自定义cell
- 因为cell的界面比较固定,所以通常都会选择用xib来描述cell
- 那么如何将xib文件加载到我们的tableView中呢?
一.加载xib的两种方法
1.通过NSBundle加载xib
注意点:通过NSBundle的方法,一定要给xib文件
加标识(ID)
,否则cell不会循环利用
给cell加ID时注意点
- 加上
const
,这样标识右边的变量就是只读
的,不能被修改,防止某些同事乱改我的ID
,那么就不能循环利用cell了
static NSString *const ID = @"cell";
示例代码
#import <UIKit/UIKit.h> @class MTYSubTagItem;
@interface MTYSubCell : UITableViewCell /** cell的数据模型 */
@property (nonatomic, strong) MTYSubTagItem *tagItem; /** 快速从xib中加载cell的方法 */
+ (instancetype)subCell;
@end// 从NSBundle中加载xib文件
+ (instancetype)subCell
{
return [[[NSBundle mainBundle] loadNibNamed:@"MTYSubCell" owner:nil options:nil] firstObject];
}
- 加上
2. 通过注册的方法
定义一个全局的静态变量标识,只能在当前文件夹下用
在tableView的viewDidLoad方法中注册xib
// 从NSBundle中加载xib文件
- (void)viewDidLoad
{
[super viewDidLoad]; // 注册xib
[self.tableView registerNib:[UINib nibWithNibName:@"MTYSubCell" bundle:nil] forCellReuseIdentifier:ID];
}
通过注册的方法加载xib,在tableView的代理方法中可以省略判断cell是否为空的那行代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MTYSubCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; /*
// 可以省略
if(cell == nil)
{
// 创建cell
}
*/ cell.tagItem = self.tags[indexPath.row]; return cell
}
```
二.注意点
- 加载出来的xib的
类型
,和加载时xib的名字
没有关系,和xib的class
有关 - 所以创建自定义cell的时候可以直接勾选
创建xib文件
,如果单独另外创建xib文件,那么要绑定类
xib文件的加载方法的更多相关文章
- 常用js,css文件统一加载方法,并在加载之后调用回调函数
原创内容,转载请注明出处! 为了方便资源管理和提升工作效率,常用的js和css文件的加载应该放在一个统一文件里面完成,也方便后续的资源维护.所以我用js写了以下方法,存放在“sourceControl ...
- iOS Interface Builder:在.xib文件中加载另一个.xib文件
在开发中,经常会用到一个需要重复使用的模块,比如好友列表中每个用户的展示或每条动态,这些都是相同的模版,这样我们就可以把这个部分提取出来放到一个单独的.xib中.那么提取出的.xib如何在其他.xib ...
- Java之——Web项目中DLL文件动态加载方法
本文转自:https://blog.csdn.net/l1028386804/article/details/53903557 在Java Web项目中,我们经常会用到通过JNI调用dll动态库文件来 ...
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...
- javascript文件加载模式与加载方法
加载方式 形象图像化方法,见 http://www.growingwiththeweb.com/2014/02/async-vs-defer-attributes.html 1. script标签, ...
- QML中文件的加载(三种方法)
在这里小小总结一下QML文件中如何加载QML文件与JavaScript文件. 1.QML文件中加载JavaScript文件 语法: import <ModuleIdentifier> &l ...
- iOS UI-(多)视图控制器的生命周期、加载方法和模态视图方法以及屌丝方法
#import "ViewController.h" #import "SecondViewController.h" @interface ViewContr ...
- iOS控制器与视图加载方法
转载记录, 请看原文: 1. iOS中的各种加载方法(initWithNibName,loadNibNamed,initWithCoder,awakeFromNib等等)简单使用 http://w ...
- C#遍历XML文件动态加载菜单
通过遍历XML文件动态加载菜单,顺便利用WebBrowser控件实现一个简单的桌面浏览器 效果如下: 代码如下: XMLFile1.xml <?xml version="1.0&quo ...
随机推荐
- B树——算法导论(25)
B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...
- CORS详解[译]
介绍 由于同源策略的缘故,以往我们跨域请求,会使用诸如JSON-P(不安全)或者代理(设置代理和维护繁琐)的方式.而跨源资源共享(Cross-Origin Resource Sharing)是一个W3 ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- 使用SecureCRT连接虚拟机(ubuntu)配置记录
这种配置方法,可以非常方便的操作虚拟机里的Linux系统,且让VMware在后台运行,因为有时候我直接在虚拟机里操作会稍微卡顿,或者切换速度不理想,使用该方法亲测本机效果确实ok,特此记录. Secu ...
- MongoDB集群配置
本文演示:(一个主服务器,一个备份服务器,三个仲裁服务器) 官方推荐副本集的成员数量为奇数,最多12个副本集节点,最多7个节点参与选举. 本文演示基于本机,用端口区分服务(每个服务器下新建db文件夹用 ...
- scanf类型不匹配造成死循环
int i = 0; while (flag) { printf("please input a number >>> "); scanf("% ...
- JavaScript将字符串中的每一个单词的第一个字母变为大写其余均为小写
要求: 确保字符串的每个单词首字母都大写,其余部分小写. 这里我自己写了两种方法,或者说是一种方法,另一个是该方法的变种. 第一种: function titleCase(str) { var new ...
- SpringMVC视图解析器
SpringMVC视图解析器 前言 在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视 图解析器.当我们对SpringMVC控制的资源发起 ...
- 魅力 .NET:从 Mono、.NET Core 说起
前段时间,被问了这样一个问题:.NET 应用程序是怎么运行的? 当时大概愣了好久,好像也没说出个所以然,得到的回复是:这是 .NET 程序员最基本的...呵呵! 微软开源,其实不只是对 .NET 本身 ...
- chrome拓展开发实战:页面脚本的拦截注入
原文请访问个人博客:chrome拓展开发实战:页面脚本的拦截注入 目前公司产品的无线站点已经实现了业务平台组件化,所有业务组件的转场都是通过路由来完成,而各个模块是通过requirejs进行统一管理, ...