码迷,mamicode.com
首页 > 其他好文 > 详细

UITableView 和 UITableViewCell 的基本配置和常用属性

时间:2015-08-15 22:44:07      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

一:UITableView的几个重要属性

  1,style样式, 在初始化时设置

    - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style;

    其中UITableViewStyle枚举类型为:

     typedef NS_ENUM(NSInteger, UITableViewStyle) {

        UITableViewStylePlain,                  // regular table view

        UITableViewStyleGrouped                 // preferences style table view

      };

   2,separatorStyle 分割线样式

      @property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;

      其中UITableViewCellSeparatorStyle枚举类型

       typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {

          UITableViewCellSeparatorStyleNone,

          UITableViewCellSeparatorStyleSingleLine,

          UITableViewCellSeparatorStyleSingleLineEtched   // This separator style is only supported for grouped style table views currently

      };

    3,separatorColor 分割线颜色

      @property (nonatomic, retain) UIColor   *separatorColor

      UI_APPEARANCE_SELECTOR; // default is the standard separator gray

    4,rowHeight 行高

      @property (nonatomicCGFloat  rowHeight;             // will return the default value if unset

    5,delegate控制代理 

    @property (nonatomic, assign)   id <UITableViewDataSource> dataSource;

    6,dataSource数据代理

    @property (nonatomic, assign)   id <UITableViewDelegate>   delegate;

二,UITableView基本配置

   1,UITableViewDataSource协议

        @required

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; //没个分区的行数

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;//配置cell

   @optional

     - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;              // Default is 1 if not implemented

      - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;    //section索引的title集合

     - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;     //设置头部标题

     - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;   //设置尾部标题

 

    2,UITableViewDelegate协议

      1>-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath   //设置cell行高

      2>-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath //设置cell的缩进级别

      3>-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)sectionn  //设置头部

      4>-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section //设置尾部

三,UITableViewCell

   1,cell的基本组成; 编辑,内容,辅助

    1>编辑 editView,tableView被编辑时显示

    2>内容 包括imageView,textLabel,detailTextLabel

    3>辅助 accessoryView   显示cell的辅助信息

   2,cell定制

    1>imageView   //图片

    2>textLabel  //文本

    3>detailTextLabel  //详情

    4>selectStyle   //选中效果

      有如下四种选中效果

typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) {

    UITableViewCellSelectionStyleNone,

    UITableViewCellSelectionStyleBlue,

    UITableViewCellSelectionStyleGray,

    UITableViewCellSelectionStyleDefault NS_ENUM_AVAILABLE_IOS(7_0)

};

    5>accessoryType   //辅助效果

 

      辅助效果为如下枚举类型

    

    typedef NS_ENUM(NSInteger, UITableViewCellAccessoryType) {

        UITableViewCellAccessoryNone,                   // don‘t show any accessory view

        UITableViewCellAccessoryDisclosureIndicator,    // regular chevron. doesn‘t track

        UITableViewCellAccessoryDetailDisclosureButton, // info button w/ chevron. tracks

        UITableViewCellAccessoryCheckmark,              // checkmark. doesn‘t track

        UITableViewCellAccessoryDetailButton NS_ENUM_AVAILABLE_IOS(7_0) // info button. tracks

    };

    6>accessoryView 自定义设置头边的辅助按钮    //accessoryView的返回值类型为UIView

    7>indentationLevel   //缩进

  3,cell控制

    1> -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath  //当accessoryType设置为button类型时,监听事件

    2> -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath  //cell 即将被选中是触发

    3>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  //cell已经被选中时触发

    4>-(NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath  //cell即将被取消时触发

    5>-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath  //cell被取消时触发

    ***tableView的一个方法(不是代理方法)[tableView deselectRowAtIndexPath:<#(NSIndexPath *)#> animated:<#(BOOL)#>]//设置选中点击效果

  4,cell的自定义

    注意,设置行高的方法,是在初始化cell之前执行的。

    1> 所以要想根据数据源中数据的大小来显示设置cell的行高,必须要在设置行高的方法中计算数据源中每一项的高度

        即在-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 方法内部计算数据源中数据的高度,并返回

    2> 

      -(void)layoutSublayersOfLayer:(CALayer *)layer

      {

          [super layoutSublayersOfLayer:layer];

    

          //cell配置方法中进行赋值,而在该方法中进行对cell中属性的其它操作

      }

四:cell的重用机制

  1,row是tableView中每条数据展示的位置,cell是负责添加到row上展示相应地数据。

  2,cell的数量,取决于屏幕所能显示的行数

  3,cell重用机制的优点:节省内存空间

UITableView 和 UITableViewCell 的基本配置和常用属性

标签:

原文地址:http://www.cnblogs.com/puguanen-ecit/p/4733053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!