zoukankan      html  css  js  c++  java
  • UITableView整理

     1.UITableView有两种样式:
    1. [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStylePlain];  
    2. [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStyleGrouped];  

    2.UITableView的结构:

    UITableView由头部,尾部,和中间一连串的单元格组成,UITableView的头部由tableHeaderView属性设置,尾部由tableFooterView属性设置,中间的

    行高可通过rowHeight属性设置

    1. _listArray = [[UIFont familyNames] retain];//获取所有字体名称  
    2.   
    3. _tableView = [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStylePlain];  
    4. // 设置数据源  
    5. _tableView.dataSource = self;  
    6. // 设置代理  
    7. _tableView.delegate = self;  
    8. // 设置表视图cell的高度,统一的高度  
    9. _tableView.rowHeight = 70;    // 默认44px  
    10. // 设置表视图的背景  
    11. UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"IMG_0410"]];  
    12. _tableView.backgroundView = backgroundView;  
    13. [backgroundView release];  
    14. // 设置表视图的颜色  
    15.   _tableView.backgroundColor = [UIColor yellowColor];  
    16. // 设置表视图的分割线的颜色  
    17.   _tableView.separatorColor = [UIColor purpleColor];  
    18. // 设置表视图的分割线的风格  
    19. _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;  
    20. // 设置表视图的头部视图(headView 添加子视图)  
    21. UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)];  
    22. headerView.backgroundColor = [UIColor redColor];  
    23. // 添加子视图  
    24. UILabel *headText = [[UILabel alloc] initWithFrame:CGRectMake(60, 0, 200, 80)];  
    25. headText.text = @"天晴朗,天晴朗天晴朗天晴朗!";  
    26. headText.numberOfLines = 0;  
    27. [headerView addSubview:headText];  
    28. [headText release];  
    29. _tableView.tableHeaderView = headerView; //设置头部  
    30. [headerView release];  
    31. // 设置表视图的尾部视图(footerView 添加子视图)      
    32. UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)];  
    33. footerView.backgroundColor = [UIColor yellowColor];  
    34. _tableView.tableFooterView = footerView;  //设置尾部  
    35. [footerView release];  

    UITableView的一些常用属性

     

    [objc] view plaincopy
     
    1. //设置UITableView分割线风格  
    2. @property(nonatomic) UITableViewCellSeparatorStyle separatorStyle;   
    3. //设置UITableView分割线颜色,默认为标准灰色  
    4. @property(nonatomic,retain) UIColor               *separatorColor;    
    5. //设置UITableView的头部  
    6. @property(nonatomic,retain) UIView *tableHeaderView;   
    7. //设置UITableView的尾部  
    8. @property(nonatomic,retain) UIView *tableFooterView;   
    9. //设置UITableView的Cell的高度  
    10. @property (nonatomic)          CGFloat                     rowHeight;  
    11. //设置UITableView种section的头部的高度  
    12. @property (nonatomic)          CGFloat                     sectionHeaderHeight;  
    13. //设置UITableView种section的尾部的高度  
    14. @property (nonatomic)          CGFloat                     sectionFooterHeight;  
    15. //设置UITableView的背景  
    16. @property(nonatomic, readwrite, retain) UIView *backgroundView NS_AVAILABLE_IOS(3_2);  
    17. //设置UITableView是否可编辑,默认为no,不可编辑  
    18. @property(nonatomic,getter=isEditing) BOOL editing;   
    19. - (void)setEditing:(BOOL)editing animated:(BOOL)animated;//方法带有动画效果  
    20. //当UITableView不在编辑时,cell是否可以选中,默认为yes  
    21. @property(nonatomic) BOOL allowsSelection NS_AVAILABLE_IOS(3_0);    
    22. //当UITableView在编辑时,cell是否可以选中,默认为no  
    23. @property(nonatomic) BOOL allowsSelectionDuringEditing;      
    24. //当UITableView不在编辑时,cell是否可以选中多个,默认为no                                  
    25. @property(nonatomic) BOOL allowsMultipleSelection NS_AVAILABLE_IOS(5_0);    
    26. //当UITableView在编辑时,cell是否可以选中多个,默认为no  
    27. @property(nonatomic) BOOL allowsMultipleSelectionDuringEditing NS_AVAILABLE_IOS(5_0);   

    UITableView的一些常用方法:

    1. //整体刷新UITableView  
    2. - (void)reloadData;   
    1. //指定一个cell,返回一个NSIndexPath,如果cell没有,返回nil  
    2. - (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell;   
    3. //指定一个范围,返回一组NSIndexPath,如果rect无效,返回nil  
    4. - (NSArray *)indexPathsForRowsInRect:(CGRect)rect;   
    5. //指定一个NSIndexPath,返回一个cell  
    6. - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;   
    7. //返回所有显示的cell  
    8. - (NSArray *)visibleCells;  
    9. //返回所有显示的cell的NSIndexPath  
    10. - (NSArray *)indexPathsForVisibleRows;  

     

    UITableView的一些编辑方法:
    1. //插入一个cell到指定的indexPaths位置,指定一个动画效果  
    2. - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;  
    3. //删除indexPaths位置的cell,指定一个动画效果  
    4. - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;  
    5. //刷新indexPaths位置的cell,指定一个动画效果(tableView的局部刷新,一般用于cell的位置不改变,又不想刷新整个tableView时)  
    6. - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);  
    7. //移动indexPaths位置的cell,指定一个动画效果  
    8. - (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath NS_AVAILABLE_IOS(5_0);  
    UITableView数据源方法

    1. //UITableView有多少个组  
    2. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{  
    3.     return 1;//默认为1  
    4. }  
    5. //UITableView每组有多少条数据  
    6. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;  
    7. {  
    8.     return [_listArray count];  
    9. }   
    10.   
    11. //创建一个cell  
    12. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
    13. {  
    14.     static NSString *cellIdentifier = @"cell";  
    15.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];  
    16.     if (cell == nil) {  
    17.         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];  
    18.     //cell的四种样式  
    19.     //UITableViewCellStyleDefault,       只显示图片和标题  
    20.        //UITableViewCellStyleValue1,        显示图片,标题和子标题(子标题在右边)  
    21.        //UITableViewCellStyleValue2,        标题和子标题  
    22.        //UITableViewCellStyleSubtitle       显示图片,标题和子标题(子标题在下边)  
    23.   
    24.     }  
    25.     // 指向其中一行  
    26. //    cell.textLabel.text = [self.listArray objectAtIndex:indexPath.row];//设置cell的标题  
    27.     cell.textLabel.textColor = [UIColor redColor];//设置标题字体颜色  
    28.     cell.textLabel.font = [UIFont fontWithName:fontName size:18];//设置标题字体大小  
    29.     cell.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@""]];//设置cell的图片  
    30.     cell.detailTextLabel = @"detailTextLabel"// 设置cell的子标题  
    31.     return cell;  
    32.       
    33. }   
     
    1. //设置组头部的文字  
    2. - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;   
    3. //设置组尾部的文字  
    4. - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;  
    1. //指定cell是否可编辑  
    2. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;  
    3. //指定cell是否可移动  
    4. - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath;  
    5. //提交编辑操作,重写此方法,自动实现cell左滑动删除功能  
    6. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;  
    7. // 移动cell  
    8. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath;  

     

    1. //右边索引显示的内容  
    2. - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView  
    3. {  
    4.     return _keyArray;  
    5. }   
    6. // 点击右边索引跳转到哪个index位置  
    7. - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index  
    8. {  
    9.     return index;  
    10. }   

    UITalbeView常用的代理方法

     

     

    1. //cell的行高  
    2. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;  
    3. //组头部的高度  
    4. - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;  
    5. //组尾部的高度  
    6. - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;  
    7. //自定义组头部视图,此方法和数据源中设置头部标题的方法只能实现一个  
    8. - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;   // custom view for header. will be adjusted to default or specified header height  
    9. //自定义组尾部视图,此方法和数据源中设置尾部标题的方法只能实现一个  
    10. - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;    
    11. //点击cell时调用  
    12. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;  
    13. //取消点击cell时调用  
    14. - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(3_0);  

    UITableViewCell的一些辅助功能

     

    //sell的选中样式

     

    1. cell.selectionStyle = UITableViewCellSelectionStyleBlue;  

    如果想选中后取消,在didSelectRowAtIndexPath方法中调用

     

     

    1. [tableView deselectRowAtIndexPath:indexPath animated:YES];或  
    2. [self performSelector:@selector(deselectRowAtIndexPath:animated:) withObject:indexPath afterDelay:.5];  

    如果想在cell的右边出现选中状态或箭头可以设置下面的属性

     

    1. cell.accessoryType = UITableViewCellAccessoryCheckmark;  
    cell根据文字的多少自适应高度
    1. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath  
    2. {  
    3.     // wrong  UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];  
    4.     NSString *text = [_listArray objectAtIndex:indexPath.row];  
    5.     //320为文字显示的宽度,高度1000是随便写的,会自动根据文字的大小和宽度计算出高度  
    6.     CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(320, 1000)];  
    7.     // +20是为了让每个cell之间有些间隔  
    8.     return size.height+20;  
    9. }  
    1.     //这样写在IOS7.0以后 TableViewCell的分割线就不会往右挫15个像素点了  
    2.    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];  
    3. [tableViewsetSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];  
  • 相关阅读:
    RDIFramework.NET开发实例━表约束条件权限的使用-WinForm
    RDIFramework.NET V2.8版本 ━ 开发实例之产品管理(WinForm)
    RDIFramework.NET ━ Web中打印的各种方案参考-欢迎补充
    RDIFramework.NET 框架兼容各种数据库类型事务使用范例参考
    【干货】再上数据分页控件 ━ 更加灵活,更加实用-提供源码
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增岗位管理-Web部分
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增岗位管理-WinForm部分
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布
    Javascript中的apply与call详解
    Javascript定义类(class)的三种方法
  • 原文地址:https://www.cnblogs.com/sunshaowen/p/4087553.html
Copyright © 2011-2022 走看看