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文件的加载方法的更多相关文章

  1. 常用js,css文件统一加载方法,并在加载之后调用回调函数

    原创内容,转载请注明出处! 为了方便资源管理和提升工作效率,常用的js和css文件的加载应该放在一个统一文件里面完成,也方便后续的资源维护.所以我用js写了以下方法,存放在“sourceControl ...

  2. iOS Interface Builder:在.xib文件中加载另一个.xib文件

    在开发中,经常会用到一个需要重复使用的模块,比如好友列表中每个用户的展示或每条动态,这些都是相同的模版,这样我们就可以把这个部分提取出来放到一个单独的.xib中.那么提取出的.xib如何在其他.xib ...

  3. Java之——Web项目中DLL文件动态加载方法

    本文转自:https://blog.csdn.net/l1028386804/article/details/53903557 在Java Web项目中,我们经常会用到通过JNI调用dll动态库文件来 ...

  4. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  5. javascript文件加载模式与加载方法

    加载方式 形象图像化方法,见 http://www.growingwiththeweb.com/2014/02/async-vs-defer-attributes.html 1. script标签, ...

  6. QML中文件的加载(三种方法)

    在这里小小总结一下QML文件中如何加载QML文件与JavaScript文件. 1.QML文件中加载JavaScript文件 语法: import <ModuleIdentifier> &l ...

  7. iOS UI-(多)视图控制器的生命周期、加载方法和模态视图方法以及屌丝方法

    #import "ViewController.h" #import "SecondViewController.h" @interface ViewContr ...

  8. iOS控制器与视图加载方法

    转载记录, 请看原文: 1. iOS中的各种加载方法(initWithNibName,loadNibNamed,initWithCoder,awakeFromNib等等)简单使用   http://w ...

  9. C#遍历XML文件动态加载菜单

    通过遍历XML文件动态加载菜单,顺便利用WebBrowser控件实现一个简单的桌面浏览器 效果如下: 代码如下: XMLFile1.xml <?xml version="1.0&quo ...

随机推荐

  1. Online Judge(OJ)搭建(第一版)

    搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...

  2. UWP学习目录整理

    UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...

  3. JAVA for mac 的学习之路

    要学习一门新技术,首先得下载相关的工具. 一 . 下载相关工具 1. 下载 jdk formac 下载地址为:http://www.oracle.com/technetwork/java/javase ...

  4. .Net多线程编程—任务Task

    1 System.Threading.Tasks.Task简介 一个Task表示一个异步操作,Task的创建和执行是独立的. 只读属性: 返回值 名称 说明 object AsyncState 表示在 ...

  5. 前端学HTTP之日志记录

    前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...

  6. UWP开发之Template10实践二:拍照功能你合理使用了吗?(TempState临时目录问题)

    最近在忙Asp.Net MVC开发一直没空更新UWP这块,不过有时间的话还是需要将自己的经验和大家分享下,以求共同进步. 在上章[UWP开发之Template10实践:本地文件与照相机文件操作的MVV ...

  7. PHP中PDO事务的使用方法

    事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...

  8. 2Sum

    用哈希表(unordered_map)使得时间复杂度从O(n*n)降到O(n),空间复杂度从O(1)增到O(n):一边找一边插入哈希表 注意 在C++11以前要使用unordered_map需要 #i ...

  9. Git分布式版本控制教程

    Git分布式版本控制Git 安装配置Linux&Unix平台 Debian/Ubuntu $ apt-get install git Fedora $ ) $ dnf and later) G ...

  10. BAT“搅局”B2B市场,CIO们准备好了吗?

    "CIO必须灵活构建其所在企业的IT系统,深入业务,以应对日新月异的数字化业务环境."   BAT军团"搅局"B2B市场,CIO们准备好了吗? 庞大的企业级市场 ...