zoukankan      html  css  js  c++  java
  • IOS之表视图添加索引

    我们要实现的效果如下。

       

    1.修改ControlView.h,即添加变量dict,用于存储TabelView的数据源。

    Cpp代码 复制代码 收藏代码
    1. #import <UIKit/UIKit.h>  
    2.   
    3. @interface IkrboyViewController5 : UIViewController{  
    4.     NSMutableDictionary *dict;  
    5. }  
    6.   
    7. @end  
    #import <UIKit/UIKit.h>
    
    @interface IkrboyViewController5 : UIViewController{
        NSMutableDictionary *dict;
    }
    
    @end

     2.在ControlView.m添加如下修改

    Cpp代码 复制代码 收藏代码
    1. - (void)viewDidLoad  
    2. {  
    3.     [super viewDidLoad];  
    4.     [self initTableViewData];  
    5.     // Do any additional setup after loading the view.  
    6. }  
    7.   
    8. -(void)initTableViewData{  
    9.     NSBundle *bundle = [NSBundle mainBundle];  
    10.     NSString *plistPath = [bundle pathForResource:@"user_head" ofType:@"plist"];  
    11.     NSArray *dataArr = [[NSArray alloc] initWithContentsOfFile:plistPath];  
    12.     //将所有数据分为三组  
    13.     NSMutableArray *arr1 = [NSMutableArray array];  
    14.     NSMutableArray *arr2 = [NSMutableArray array];  
    15.     NSMutableArray *arr3 = [NSMutableArray array];  
    16.       
    17.     dict = [NSMutableDictionary dictionary];  
    18.     [dict setObject:arr1 forKey:@"Group1"];  
    19.     [dict setObject:arr2 forKey:@"Group2"];  
    20.     [dict setObject:arr3 forKey:@"Group3"];  
    21.       
    22.     //设置划分数据的依据,即根据index分三组,index为0-1的为第一组,2-4为第二组,5为第三组  
    23.     for(NSInteger index = 0; index < [dataArr count]; index++){  
    24.         NSDictionary *item = [dataArr objectAtIndex:index];  
    25.         if(index<2){  
    26.             [arr1 addObject:item];  
    27.         }  
    28.         else if(index>=2&&index<5){  
    29.             [arr2 addObject:item];  
    30.         }  
    31.         else if(index>=5){  
    32.             [arr3 addObject:item];  
    33.         }  
    34.     }  
    35. }  
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self initTableViewData];
    	// Do any additional setup after loading the view.
    }
    
    -(void)initTableViewData{
        NSBundle *bundle = [NSBundle mainBundle];
        NSString *plistPath = [bundle pathForResource:@"user_head" ofType:@"plist"];
        NSArray *dataArr = [[NSArray alloc] initWithContentsOfFile:plistPath];
        //将所有数据分为三组
        NSMutableArray *arr1 = [NSMutableArray array];
        NSMutableArray *arr2 = [NSMutableArray array];
        NSMutableArray *arr3 = [NSMutableArray array];
        
        dict = [NSMutableDictionary dictionary];
        [dict setObject:arr1 forKey:@"Group1"];
        [dict setObject:arr2 forKey:@"Group2"];
        [dict setObject:arr3 forKey:@"Group3"];
        
        //设置划分数据的依据,即根据index分三组,index为0-1的为第一组,2-4为第二组,5为第三组
        for(NSInteger index = 0; index < [dataArr count]; index++){
            NSDictionary *item = [dataArr objectAtIndex:index];
            if(index<2){
                [arr1 addObject:item];
            }
            else if(index>=2&&index<5){
                [arr2 addObject:item];
            }
            else if(index>=5){
                [arr3 addObject:item];
            }
        }
    }

     3.初始化TableView

    Cpp代码 复制代码 收藏代码
    1. //分为多少个分组  
    2. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  
    3. {  
    4.     return [[dict allKeys] count];  
    5. }  
    6. //每个分组的数据单元个数  
    7. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
    8. {  
    9.     switch(section)  
    10.     {  
    11.         case 0:  
    12.         {  
    13.             return [[dict objectForKey:@"Group1"] count];  
    14.         }  
    15.         case 1:  
    16.         {  
    17.             return [[dict objectForKey:@"Group2"] count];  
    18.         }  
    19.         case 2:  
    20.         {  
    21.             return [[dict objectForKey:@"Group3"] count];  
    22.         }  
    23.     }  
    24.     return 0;  
    25. }  
    26. //分组的标题,不实现下面的方法,不显示分组标题  
    27. - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section  
    28. {  
    29.     //dict allKeys取出的key arr无顺序,需进行排序  
    30.     NSArray *arr = [[dict allKeys] sortedArrayUsingSelector:@selector(compare:)];  
    31.     return [arr objectAtIndex:section];  
    32. }  
    33. //列表右侧的索引提示,不实现下面的方法,不显示右侧索引  
    34. -(NSArray *) sectionIndexTitlesForTableView: (UITableView *) tableView  
    35. {  
    36.     //dict allKeys取出的key arr无顺序,需进行排序  
    37.     NSArray *arr = [[dict allKeys] sortedArrayUsingSelector:@selector(compare:)];  
    38.     return arr;  
    39. }  
    40.   
    41. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
    42. {  
    43.     static NSString *CellIdentifier = @"myTableCell";  
    44.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
    45.       
    46.     NSUInteger row = [indexPath row];  
    47.     NSUInteger section = [indexPath section];  
    48.     NSArray *arr;  
    49.       
    50.     switch (section) {  
    51.         case 0:  
    52.             arr = [dict objectForKey:@"Group1"];  
    53.             break;  
    54.         case 1:  
    55.             arr = [dict objectForKey:@"Group2"];  
    56.             break;  
    57.         case 2:  
    58.             arr = [dict objectForKey:@"Group3"];  
    59.             break;  
    60.         default:  
    61.             break;  
    62.     }  
    63.       
    64.     NSDictionary *rowDict = [arr objectAtIndex:row];  
    65.     cell.textLabel.text =  [rowDict objectForKey:@"itemName"];  
    66.     NSLog(@"cell.label.text =  %@",[rowDict objectForKey:@"itemName"]);  
    67.       
    68.     NSString *imagePath = [rowDict objectForKey:@"itemImagePath"];  
    69.     cell.imageView.image = [UIImage imageNamed:imagePath];  
    70.     NSLog(@"cell.image.image  =  %@",imagePath);  
    71.       
    72.     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;  
    73.       
    74.     return cell;  
    75. }  
    76.   
    77. //选中Cell响应事件  
    78. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
    79.     [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失  
    80.     NSUInteger row = [indexPath row];  
    81.     NSUInteger section = [indexPath section];  
    82.     NSArray *arr;  
    83.       
    84.     switch (section) {  
    85.         case 0:  
    86.             arr = [dict objectForKey:@"Group1"];  
    87.             break;  
    88.         case 1:  
    89.             arr = [dict objectForKey:@"Group2"];  
    90.             break;  
    91.         case 2:  
    92.             arr = [dict objectForKey:@"Group3"];  
    93.             break;  
    94.         default:  
    95.             break;  
    96.     }  
    97.       
    98.     NSDictionary *rowDict = [arr objectAtIndex:row];  
    99.     NSString *userName =  [rowDict objectForKey:@"itemName"];  
    100.     NSLog(@"userName=%@",userName);  
    101. }  
    //分为多少个分组
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
    	return [[dict allKeys] count];
    }
    //每个分组的数据单元个数
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        switch(section)
        {
            case 0:
            {
                return [[dict objectForKey:@"Group1"] count];
            }
            case 1:
            {
                return [[dict objectForKey:@"Group2"] count];
            }
            case 2:
            {
                return [[dict objectForKey:@"Group3"] count];
            }
        }
        return 0;
    }
    //分组的标题,不实现下面的方法,不显示分组标题
    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    {
        //dict allKeys取出的key arr无顺序,需进行排序
        NSArray *arr = [[dict allKeys] sortedArrayUsingSelector:@selector(compare:)];
    	return [arr objectAtIndex:section];
    }
    //列表右侧的索引提示,不实现下面的方法,不显示右侧索引
    -(NSArray *) sectionIndexTitlesForTableView: (UITableView *) tableView
    {
        //dict allKeys取出的key arr无顺序,需进行排序
        NSArray *arr = [[dict allKeys] sortedArrayUsingSelector:@selector(compare:)];
        return arr;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"myTableCell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        
        NSUInteger row = [indexPath row];
        NSUInteger section = [indexPath section];
        NSArray *arr;
        
        switch (section) {
            case 0:
                arr = [dict objectForKey:@"Group1"];
                break;
            case 1:
                arr = [dict objectForKey:@"Group2"];
                break;
            case 2:
                arr = [dict objectForKey:@"Group3"];
                break;
            default:
                break;
        }
        
        NSDictionary *rowDict = [arr objectAtIndex:row];
        cell.textLabel.text =  [rowDict objectForKey:@"itemName"];
        NSLog(@"cell.label.text =  %@",[rowDict objectForKey:@"itemName"]);
        
        NSString *imagePath = [rowDict objectForKey:@"itemImagePath"];
        cell.imageView.image = [UIImage imageNamed:imagePath];
        NSLog(@"cell.image.image  =  %@",imagePath);
        
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        
        return cell;
    }
    
    //选中Cell响应事件
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失
        NSUInteger row = [indexPath row];
        NSUInteger section = [indexPath section];
        NSArray *arr;
        
        switch (section) {
            case 0:
                arr = [dict objectForKey:@"Group1"];
                break;
            case 1:
                arr = [dict objectForKey:@"Group2"];
                break;
            case 2:
                arr = [dict objectForKey:@"Group3"];
                break;
            default:
                break;
        }
        
        NSDictionary *rowDict = [arr objectAtIndex:row];
        NSString *userName =  [rowDict objectForKey:@"itemName"];
        NSLog(@"userName=%@",userName);
    }
    
  • 相关阅读:
    格式化数字,将字符串格式的数字,如:1000000 改为 1 000 000 这种展示方式
    jquery图片裁剪插件
    前端开发采坑之安卓和ios的兼容问题
    页面消息提示,上下滚动
    可以使用css的方式让input不能输入文字吗?
    智慧农村“三网合一”云平台测绘 大数据 农业 信息平台 应急
    三维虚拟城市平台测绘 大数据 规划 三维 信息平台 智慧城市
    农业大数据“一张图”平台测绘 大数据 房产 国土 农业 信息平台
    应急管理管理局安全生产预警平台应急管理系统不动产登记 测绘 大数据 规划 科教 三维 信息平台
    地下综合管廊管理平台测绘 大数据 地下管线 三维 信息平台
  • 原文地址:https://www.cnblogs.com/lovewx/p/4187250.html
Copyright © 2011-2022 走看看