首页 > 代码库 > iOS开发 UITableView的方法和属性总结

iOS开发 UITableView的方法和属性总结

本文描述UITableView的各种方法,属性,委托以及数据源。本文的目的只是总结UITableView的用法,详细的例子另撰文描述。

1 数据源  UITableViewDataSource协议 

  01 返回组(节)的个数,默认是返回1,如果只有1组数据,可以不用实现该方法。

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

  02 返回某一组的行数,该组由section的值决定

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

  03 返回某一组某一行的UITableViewCell,该行由indexPath决定,

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath , 

  04 返回某一组的头部标题

    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section  

  05 返回某一组的尾部标题

    - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section 

2 委托  UITableViewDataDelegate协议 

  01 设置cell的高度。

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

  02 某一行被选中后,该方法被调用 

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

  03 返回分组头部视图,下面两个方法必须同时使用,否则出问题

            - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

            - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

3 UITableView的常见属性和方法

  01 设置表视图的显示方式:平铺还是多组显示

    @property (nonatomic, readonly) UITableViewStyle           style;   

  02 设置cell的高度,通过rowHeight属性设置,所有的行高都是一样的

    @property (nonatomic)  CGFloat    rowHeight;   

  03 设置分割线样式

    @property(nonatomic) UITableViewCellSeparatorStyle separatorStyle;        

  04 设置分割线颜色

    @property(nonatomic,retain) UIColor               *separatorColor;        

  05 设置tableView的头部视图和底部视图,其宽度默认和tableveiw一样宽

            tableview.tableHeaderView = [UIButton buttonWithType:UIButtonTypeContactAdd];

            tableview.tableFooterView = [[UISwitch alloc] init];

      06 设置是否隐藏垂直的滚动条

            self.tableView.showsVerticalScrollIndicator = NO;

  07 设置cell是否能被选中

            self.tableView.allowsSelection = NO;

  08.tableveiw滚动到某一行

    - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

4 UITableViewCell的相关属性和方法设置每行的视图和方法

  01 每个cell的辅助控件

    @property (nonatomic) UITableViewCellAccessoryType    accessoryType;   每一行最右边的控件,默认不显示

    @property (nonatomic, retain) UIView                 *accessoryView;

  02 cell的背景视图,以及背景颜色。通过backgroundColor  backgroundView都可以设置cell的背景,但是backgroundView 的优先级比 backgroundColor的高

    @property (nonatomic, retain) UIView                *backgroundView;

    @property (nonatomic, retain) UIView                *selectedBackgroundView;     设置选中状态的背景

  03 cell的显示内容,默认是保存再contentView中

    @property (nonatomic, readonly, retain) UIView      *contentView;    cell显示的view,cell默认的三个view,都在contentView

      @property (nonatomic, readonly, retain) UIImageView *imageView NS_AVAILABLE_IOS(3_0);   // default is nil.  image view will be created if necessary.

      @property (nonatomic, readonly, retain) UILabel     *textLabel NS_AVAILABLE_IOS(3_0);   // default is nil.  label will be created if necessary

      @property (nonatomic, readonly, retain) UILabel     *detailTextLabel

5 cell优化

        01、当一个cell出现在屏幕上,系统才会调用cell的生成方法

            static NSString *identifier = @"hero"            // 定义变量保存重用标记的值

            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];             //    1.先去缓存池中查找是否有满足条件的Cell

            if (cell == nil) {             //    2.如果缓存池中没有符合条件的cell,就自己创建一个Cell 

                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];                 //    3.创建Cell, 并且设置一个唯一的标记 

            }

       02.ios7已经实现了自动优化,register一个cellclass或者一个nib文件,那系统自动优化生成该cell

            1.registerClass:forCellReuseIdentifier:

             2.dequeueReusableCellWithIdentifier:forIndexPath: