• 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);
    }
    
  • 相关阅读:
    elasticDump的安装使用
    centos7中给Elasticsearch5 安装bigdesk
    centos7下Elasticsearch5.2.2和head 插件环境搭建
    渗透测试入门DVWA 环境搭建
    windows环境下运行Elasticsearch
    UltraISO刻录CentOS 7安装指南
    TCP 协议中的 Window Size与吞吐量
    php 抛出异常
    php获取字符串长度
    php批量转换时间戳
  • 原文地址:https://www.cnblogs.com/lovewx/p/4016449.html
Copyright © 2020-2023  润新知