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 ...
随机推荐
- 复杂的 Hash 函数组合有意义吗?
很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...
- ABP文档 - EntityFramework 集成
文档目录 本节内容: Nuget 包 DbContext 仓储 默认仓储 自定义仓储 特定的仓储基类 自定义仓储示例 仓储最佳实践 ABP可使用任何ORM框架,它已经内置了EntityFrame(以下 ...
- pt-table-checksum
pt-table-checksum是percona公司提供的一个用于在线比对主从数据一致性的工具. 实现原理 将一张大表分成多个chunk,每次针对一个chunk进行校验,同时将校验的结果通过REPL ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- Python爬虫小白入门(四)PhatomJS+Selenium第一篇
一.前言 在上一篇博文中,我们的爬虫面临着一个问题,在爬取Unsplash网站的时候,由于网站是下拉刷新,并没有分页.所以不能够通过页码获取页面的url来分别发送网络请求.我也尝试了其他方式,比如下拉 ...
- go语言:多个[]byte数组合并成一个[]byte
场景:在开发中,要将多个[]byte数组合并成一个[]byte,初步实现思路如下: 1.获取多个[]byte长度 2.构造一个二维码数组 3.循环将[]byte拷贝到二维数组中 package gst ...
- PHP static静态属性和静态方法
这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...
- java观察者模式
像activeMQ等消息队列中,我们经常会使用发布订阅模式,但是你有没有想过,客户端时如何及时得到订阅的主题的信息?其实就里就用到了观察者模式.在软件系统中,当一个对象的行为依赖于另一个对象的状态 ...
- css样式之background详解
background用法详解: 1.background-color 属性设置元素的背景颜色 可能的值 color_name 规定颜色值为颜色名称的背景颜色(比如 red) he ...
- Flexible 弹性盒子模型之CSS flex-grow 属性
实例 让第二个元素的宽度为其他元素的三倍: div:nth-of-type(1){flex-grow:1;} div:nth-of-type(2){flex-grow:3;} div:nth-of-t ...