UITableViewBase UI_09

简介: 1、UITableViewAPI文档总结:   1.UITableView的父类时,UIScrollView,所以它是可以滚动的,但是只能在竖直方向滚动.    2.UITableView是iOS中提供的用来以列表的形式展示数据,但是只有一列.
1、UITableView API文档总结:
UITableViewBase <wbr>UI_09

     1.UITableView的父类时,UIScrollView,所以它是可以滚动的,但是只能在竖直方向滚动.
     2.UITableView是iOS中提供的用来以列表的形式展示数据,但是只有一列.
     3.UITableView可以由多个分组构成(section),每个分组下可以有很多行(row),分组和行的下标都是从零开始.(eg:sention 班级分组 row 同学所在排数)
     4.UITbleview可以有两种样式(Plain)和(Grouped)样式,一旦给tableView指定了样式之后就不能修改了;
     5.UITableView很多方法都和NSIndexPath有关,NSIndexPath中存储的是当前你要使用的单元格(cell)所在分区的下标和所在分区中行的下标
   1.创建控件
    UITableView *tableView = [[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds style: UITableViewStylePlain ];
    UITableViewBase <wbr>UI_09

    2.配置属性
    2.1配置单元格(cell)的高
    tableView.rowHeight = 100;
   
   2.2配置cell分割线的颜色
    tableView.separatorColor = [UIColor redColor];
   
   2.3配置cell 分割线的样式
    tableView.separatorStyle    UITableViewCellSeparatorStyleSingleLine;
   
//UITableViewCellSeparatorStyleNone,
   
//UITableViewCellSeparatorStyleSingleLine,
   
//UITableViewCellSeparatorStyleSingleLineEtched
   
      2.4.1配置tableView的表头(表头很重要,经常用来做轮播图)
//    UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 50)];
//    headerView.backgroundColor = [UIColor redColor];
   
      2.4.2.将准备的视图赋值给tableView的表头视图属性
//    tableView.tableHeaderView = headerView;
      2.5配置tableView表尾
//    UIView *footView = [[UIView alloc]initWithFrame:CGRectMake(0, 508, kScreenWidth, 40)];
//    footView.backgroundColor = [UIColor cyanColor];
//    tableView.tableFooterView = footView;
   
//快速去除多余单元格
   
//    tableView.tableFooterView = [[UIView alloc]init];
   
   2.6配置数据源代理
UITableViewBase <wbr>UI_09


    tableView.dataSource = self;
    2.7配置业务代理
    tableView.delegate = self;
    
     3.添加到父视图
    [self.view addSubview:tableView];
      4.释放
    [tableView release];
   
   
//cell上有两个视图,一个是contentView 一个是accessoryView 而我们用到的cell属性 textLabel,detailTextLabel,imageView这些视图都是在contentView上,所以当我们自定义的控件放到contentView上
}
————————————————————————————————————
#pragma mark tableView的数据源代理方法
UITableViewBase <wbr>UI_09

 配置分区个数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
      
根据数组元素的格式确定分区个数
   
//    return self.bigArray.count;
    
    根据字典键值对的个数确定分区的个数
    return self.dictionary.count;
}

  返回每个分区对应的行数
- (
NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
   
      
根据分区的下标找出大数组中小数组中元素
//    return [self.bigArray[section]count];
   
   
//第一步:根据分区下的下标取出self.orderkey数组中存放的key值
   
NSString *key = self.orderkey[section];
   
   
//第二步:使用key取出字典中的value值(数组)并取出数组的元素个数
//    [self.dictionary objectForKey:key];
   
return  [self.dictionary[key]count];
}
——————————————————————————————
//在这个方法中创建单元格并对单元格配置数据
- (
UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
   
   
// UITableViewCell 单元格视图  继承自UIView 用来展示数据
//    UITableViewCell *cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil]autorelease];

#pragma mark cell的重用
    //cell的重用是为了避免反复消耗资源,耗能达到节省内存的作业
   
//cell重用的步骤

   
//1.创建一个重用标识(重用ID),这个标识在cell创建的时候使用,也在从重用池取cell时判断使用
   
    
//面试题:使用static修饰重用标识的字符串变量,可以使其只被初始化一次,提高一下重用效率
   
static  NSString *identfier  = @"cell";
   
   
//2.当需要一个单元格(cell)时,先去"重用池"中根据"重用ID"去查找有没有可以使用单元格
   
//如果有:直接从重用池中拿出来使用(修改单元格上的数据)
   
//如果没有:此时只能直接创建一个新的单元格
   
//tableView就是当前代理的委托人

   
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identfier];
   
   
//3.判断是否成功取到可重用的cell
   
if (cell == nil) {// !cell  一个意思
       
NSLog(@"=========");
        cell = [[[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:identfier]autorelease];
————————————————————————————————
UITableViewBase <wbr>UI_09

   1.给cell的imageView属性赋值
    cell.imageView.image = [UIImage imageNamed: @"11"];
    //2.给cell的textLabel赋上文本内容
    cell.textLabel.text = [NSString stringWithFormat:@"%ld--%ld",indexPath.section,indexPath.row];
    //3.给cell的detailLabel 赋上文本内容
    cell.detailTextLabel.text = @"邓丽君";
   
   //4.设置cell 的右边界辅助视图
    cell.accessoryType  = UITableViewCellAccessoryDisclosureIndicator;
    //    cell.accessoryView = [[[UISwit ch alloc]init]autorelease];
    //自定义辅助视图
        UIView *accessoryView =[[UIView alloc]initWithFrame:CGRectMake(0, 0, 40, 20)];
        accessoryView.backgroundColor = [UIColor redColor];
        cell.accessoryView = accessoryView;
   
//        UIView *view = [[UIView alloc]initWithFrame:CGRectMake(300, 0, 20, cell.frame.size.height)];
//        view.backgroundColor = [UIColor orangeColor];
        [cell addSubview:view];
    }
——————————————————————————————
UITableViewBase <wbr>UI_09

//配置每个分区的页眉,叫区头也可以
- (
NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
//    if (0 == section) {
//        return @"L";
//    }else if (1 == section){
//        return @"W";
//    }else{
//        return @"Z";
//    }
   
//根据排好序的数组返回区头
   
return self.orderkey[section];
}
//配置分区的右侧的分区索引,区头的顺序和数组中的元素一致
- (
NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
//    return @[@"F",@"S",@"G"];
   
   
//根据排好序的数组设置右侧分区索引
 return self.orderkey;    
}
//配置每个分区的页脚,叫区尾也可以
- (
NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
   
return @[@"f",@"s",@"l"][section];
}
- (
void)didReceiveMemoryWarning {
    [
super didReceiveMemoryWarning];
   
// Dispose of any resources that can be recreated.
}
————————————————————————————————
#define kScreenWidth     [UIScreen mainScreen].bounds.size.width
#import
"DetailViewController.h"
@interface RootViewController ()<</span>UITableViewDataSource,UITableViewDelegate>
@property(nonatomic,retain)NSArray *bigArray;
@property(nonatomic,retain)NSDictionary *dictionary;
@property(nonatomic,retain)NSArray
*orderkey;
@end

@implementation RootViewController
- (
void)dealloc{
   
self.bigArray = nil;
   
self.dictionary = nil;
   
self.orderkey = nil;
    [
super dealloc];
}
    NSArray *lArr = @[@"李白",@"李妹",@"李舒缓",@"梨花"];
   
NSArray *zArr = @[@"张波",@"涨姿势",@"张紫琴"];
   
NSArray *wArr = @[@"王小波",@"王伟",@"王小二"];
//    self.bigArray = @[lArr,zArr,wArr];
   
   
self.dictionary = @{@"L":lArr,@"Z":zArr,@"W":wArr};
   
//取出字典中所有的key值
   
NSArray *keys = self.dictionary.allKeys;
   
//将排好序的key值赋值给self.orderkey
  self.orderkey = [keys sortedArrayUsingSelector:@selector(compare:)];
——————————————————————————————————

#pragma mark tableView的业务代理方法 UITableViewBase <wbr>UI_09

//返回cell的行高
- (
CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
   
if (0 != indexPath.row % 2) {
       
return 80;
    }
else{
   
return 200;
    }
}
//触发时机 :点击cell的时候会触发,所以要完成点击cell跳转到其他页面,方法实现写在这个方法中
- (
void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//    NSLog(@"%ld -- %ld",indexPath.section,indexPath.row);
   
DetailViewController *detail = [[DetailViewController alloc]init];
    detail.textString = [NSString stringWithFormat:@"%ld -- %ld",indexPath.section,indexPath.row];
    [self.navigationController pushViewController:detail animated:YES];
    [detail release];
}

//触发时机:点击一个cell之后,在点击其他的cell时触发
- (
void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(3_0){
//NSLog(@"%ld -- %ld",indexPath.section,indexPath.row);  
}
#pragma mark 从数组中取数据展示
    //1.先取出大数组中的元素
   NSArray *nameArray = self.bigArray[indexPath.section];

    //2.从nameArray取出名字
   
NSString *name = nameArray[indexPath.row];
//    NSLog(@"%@",name);
   
   
//3.将给出来的名字赋值给cell.textLabel.text
    cell.textLabel.text = name;
    cell.imageView.image = [UIImage imageNamed:@"11"];
   
#pragma mark 从字典中取出数据显示
    //1.根据分区下标取出self.order 中的元素
   
NSArray *key = self.orderkey[indexPath.section];
   
   
//2.取出key值在字典中对应的数字
   
NSArray *names = self.dictionary[key];
   
   
//3.根据行下标取出数组中的名字,并赋值给textLabel.text
    cell.textLabel.text = names[indexPath.row];
最终效果图:
UITableViewBase <wbr>UI_09

——————————————————————————————
UITableViewBase <wbr>UI_09

   欢迎学习本文,未经博主许可禁止转载!
目录
相关文章
|
Apache
OSX&amp;nbsp;10.8+下开启Web&amp;nbsp;共享&amp;nbsp;的方法
MENU Home Archives About SUBSCRIBE MENU OSX 10.8+ Mountain Lion 下开启 Web Sharing(Web 共享)的方法 JUL 28, 2012 #OS X #how...
1261 0
|
Python
python&amp;nbsp;re&amp;nbsp;group()
python group() 正则表达式中,group()用来提出分组截获的字符串,()用来分组 import re a = "123abc456" print re.
1148 0
|
索引
TableEdit&amp;nbsp;UI_10
1、tableView的编辑的步骤:  1.让tableView处于编辑状态,(默认所有的cell都处于编辑状态,默认下的编辑样式是删除)  2.设置哪些cell可以编辑  3.设置编辑的样式(删除,插入)  4.
739 0
|
iOS开发
UIEvent&amp;nbsp;UIResponder&amp;nbsp;UI_04
1、事件(UIEvent),是由硬件设备捕捉到用户对设备的操作,把这个操作抽象成一个事件对象     ios中三大事件:触Touches摸晃动事件Motion,远程控制事件RemoteControl;其中应有最广泛的是触摸事件 UIView是支持触摸的,由于UIView 内部没...
623 0
|
存储
UIScrollView&amp;nbsp;UIPageViewControlle…
1、UIScorollView    是ios中提供的滑动控件,用来解决当内容区域大于scorollView可视区域时,可以通过滑动的方式查看整个内容区域,UIScorollView 的滑动控件的基类,后期药学的UITableView(表视图),内部实现的原理是修改视图的bounds //1.
893 0
|
存储
UIPassValue页面传值&amp;nbsp;UI_08(下)
2、从前一个界面到后一个界面 注意:解题思路  葵花宝典:属性传值  第一步:在下一个界面视图控制器的.h文件中定义一个属性  第二步:在push之前将数据存储到属性中  第三步:取出属性中的值让控件显示  从后一个界面往前一个界面传值  辟邪剑谱:代理传值 代理传值示意图: ...
865 0
UIView、UIViewLayout&amp;nbsp;UI_01
1、首先:在UI里面我们使用的是MRC,需要把ARC改成NO; 若学习比较吃力,可以先学习一下基础: http://blog.sina.com.cn/s/blog_814ecfa90102vuzg.
711 0
|
存储
DesignModeler&amp;nbsp;GestureRecgin…
DesignModeler : 设计模式     GestureRecginzer:手势识别 作者:韩俊强 原创版权地址:http://blog.sina.com.cn/s/blog_814ecfa90102vvm5.
858 0
Category&amp;nbsp;Protocol&amp;nbsp;Exte…
作者:韩俊强 总结以往方法: 继承是可以完成对类型的扩充,不仅能添加方法,也可以添加实例变量;/缺点:如果工程中有很多需要扩充类的使用,此时要用子类去完成替换,工作量非常大,还容易出错。下面通过例子过渡一下进入类的扩展! ==============================================================  1.
710 0