一、 封装cell:

1、加载xib文件的两种方式

  <方式1> (NewsCell是xib文件的名称)
    NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"NewsCell" owner:nil options:nil];

  <方式2>
    UINib *nib = [UINib nibWithNibNamed:@"NewsCell" bundle:nil];
    NSArry *objects = [nib instantiateWithOwner:nil options:nil];

二、设置cell的高度

  1. 如果每一行的cell高度都是一样,应该用代理方法设置cell的高度
  - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

  {

      // 如果每一行的高度一样的话,可以在viewDidLoad中设置: self.tableView.rowHeight = 80;
        // 返回indexPath这行对应的cell的高度
        return 80;
  }

====================================================================

三、自定义cell两种方式:

  方式一、通过xib描述cell:
    > 一定要注意在xib的cell中设置重用标识 (reuse identifier)     > 封装的步骤
      新建xib描述cell的样子——DealCell.xib
      新建 UITableViewCell 的子类 (定义一个类DealCell ,继承自UITableViewCell )——DealCell (封装xib内部的所有东西)
      修改 xib 中 cell 的类名 (class) 为 DealCell。
      在 DealCell 中拥有xib中的所有的子控件 (声明属性、进行连线) 。
      新建模型Deal (定义一个类 Deal ,继承自NSObject ),封装数据。
      给DealCell增加模型属性 (到时候才能从Deal中把从服务器上拿过来的数据拿到xib的控件中来显示)
      在DealCell中:
        @class Deal;
        @interface DealCell:UITableViewCell
        @property (nonatomic, weak) IBOutlet UIImageView *iconView;
        @property (nonatomic, weak) IBOutlet UIImageView *dealNewView;
        @property (nonatomic, weak) IBOutlet UILabel *titleLabel;
        @property (nonatomic, weak) IBOutlet UILabel *buyLabel;
        @property (nonatomic, weak) IBOutlet UILabel *priceLabel;
        @property (nonatomic, strong) Deal *deal;
        + (id)dealCell;
        + (NSString *) ID;
        #end
      在DealCell中重写setDeal方法(在这个方法中根据模型数据设置cell内部子控件的属性):
        #import “DealCell.h”
        #import “Deal.h”
        @implementation DealCell
        - (void)setDeal:(Deal *)deal
        {
        _deal = deal;
         // 1. 标题
         _titleLabel.text = deal.title;          // 2. 购买人数
        _buyLabel.text = [NSString stringWithFormat:@“购买:%d”, deal.buy ];         // 3. 价格
         _priceLabel.text = [NSString stringWithFormat:@“价格:%f”, deal.price ];          // 4. 头像
         _iconView.image = [UIImage imageNamed:deal.icon];          // 5. 是否显示最新
         _newView.hidden = ! deal.isNew;
         }
        + ()dealCell
        {
         return [[NSBundle mainBundle] loadNibNamed:@“DealCell” owner:nil options:nil ] [];
        }
        + (NSString *) ID
        {
         return @“deal”;
        }
        @end
        提供一个类方法,返回从xib中创建好的cell对象。
        给xib中的cell添加一个重用标识 (比如deal),再提供一个类方法返回一个重用标识。
        提供一个类方法,返回cell的高度。       > 使用cell
      设置每一行cell的高度
      利用重用标识去缓存池中取得cell
      如果缓存池中没有cell,创建cell
      传递模型给cell (这一步是在- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个方法中做的)   方式二、通过代码自定义cell:  
    > 新建一个UITableViewCell的子类——weiboCell。
    > 在创建cell的时候 (initWithStyle:reuseIdentifier:方法中) 添加cell内部需要使用的子控件。
    > 新建一个模型类—— Weibo,增加对应的数据属性。
    > 给WeiboCell增加一个Weibo模型属性, 在拿到Weibo模型数据的同时设置子控件的属性。
    > 重写setWeibo:方法,在这里面取出Weibo模型的数据显示到子控件上。
    在Deal中:
        @interface Deal:NSObject
        @property (nonatomic, copy) NSString *icon;
        @property (nonatomic, copy) NSString *title;
        @property (nonatomic, assign) int buy;
        @property (nonatomic, assign) double price;
        @property (nonatomic, assign) BOOL isNew;
        #end

iOS常用控件-UITableViewCell的更多相关文章

  1. Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例

    看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下: ...

  2. [ios2] iOS常用控件尺寸大集合 【转】

    元素控件 尺寸(PTS) Window(含状态栏) 320 x 480 Status Bar的高度 20 Navigation Bar的高度 44 含Prompt的Navigation Bar的高度 ...

  3. iOS常用控件尺寸大集合

    元素控件 尺寸(pts) Window(含状态栏) 320 x 480 Status Bar的高度 20 Navigation Bar的高度 44 含Prompt的Navigation Bar的高度 ...

  4. iOS常用控件-UIScrollView

    一. 常见属性 @property (nonatomic) CGPoint contentOffset;                      //记录UIScrollView滚动的位置 @pro ...

  5. 【Demo 0006】iOS常用控件

    本章学习要点       1.  了解iOS中控件继承关系:       2.  掌握UIControl基础知识;       3.  掌握UIButton基本用法:       4.  掌握UILa ...

  6. iOS 常用控件集合 完整项目

    [Swift]高仿 爱范儿3.0 http://www.code4app.com/forum.php?mod=viewthread&tid=10053&page=1&extra ...

  7. iOS 常用控件 参数

    1.StatusBar 20px 2.TableViewCell 44px 3.TabBar 49px 4.NavigationBar 44px 5.NaviBarIcon 20*20px 6.Tab ...

  8. iOS开发-UI (一)常用控件

    从这里开始是UI篇 知识点: 1.常用IOS基本控件 2.UITouch ======================= 常用基本控件 1.UISegmentedControl:分段控制器 1)创建方 ...

  9. iOS常见控件的基本使用

    UI相关类继承关系 UIView 常见属性和方法 UIView属性 UIView方法 UIControl 常用控件 UIImageView 图片显示控件android ImageView UISlid ...

随机推荐

  1. Python函数(1)

    一.Python函数介绍 函数时组织好的,可重复的,用来实现单一,或相关联功能的代码段. 函数的使用原则时先定义,后调用:事先准备工具的过程即函数的定义,遇到应用场景拿来当工具用即函数的调用. 函数的 ...

  2. [转]C#利用委托跨线程更新UI数据

    在使用C#的过程中,难免会用到多线程,而用多线程之后,线程如何与界面交互则是一个非常头疼的问题.其实不仅仅是界面,一般情况下,我们往往需要获得线程的一些信息来确定线程的状态.比较好的方式是用委托实现, ...

  3. eclipse svn 环境搭建

    subversion 1.8.14(r1692801) eclipse 安装插件 1.10.x版本

  4. JavaScript 数组排序(从大到小,从小到大)

    1.数组的从大到小排序 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  5. centos 7中磁盘挂载重启后挂载失效

     在centos 7磁盘挂载成功后,关机重启,挂载磁盘失效,需要重新挂载,不用重新挂载的开机挂载方法如下: 1.先检验要挂载的磁盘是否已被挂载,有的话先卸除 2.修改 /etc/fstab 文件 ,最 ...

  6. ubuntu16.4安装 VirtualBox

    1) 从oracle官网下载virtual box安装包 2) 安装支持包 sudo apt-get install libqt5x11extras5 libsdl1.2debian 3) sudo ...

  7. 初学React:组件的样式

    React中组件的样式有三种: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  8. eplise一键集成工具

    因为要做平台,后台的内容就由我负责,目前想让测试人员  在本地使用eplise可以进行脚本开发,但是很多人都死在了搭建环境的道路上,那我就做了一键集成,点击就可以把所需要的配置项进行配置,总结:实际就 ...

  9. python url库学习

    参考资料:http://cuiqingcai.com/947.html urllib,urlib2是python自带的库. urlopen(url,data,timeout),三个参数. 第一个是地址 ...

  10. Buffer实例

    互联网的基础是数据的传送,一切都围绕着数据展开,比如发送啊,接收啊,这一切都离不开网络,通过之前,学会了通过http模块来搭建一个服务器,也实现了网络爬虫,nodejs中网络的部分,Net这个模块,对 ...