• iOS.UIKit.15.UITableView -- Index


    1、案例介绍:具备索引功能的分节表视图,如图01

    图01

    2、team_dictionary.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>A组</key>
        <array>
            <string>A1-南非</string>
            <string>A2-墨西哥</string>
            <string>A3-乌拉圭</string>
            <string>A4-法国</string>
        </array>
        <key>B组</key>
        <array>
            <string>B1-阿根廷</string>
            <string>B2-尼日利亚</string>
            <string>B3-韩国</string>
            <string>B4-希腊</string>
        </array>
        <key>C组</key>
        <array>
            <string>C1-英格兰</string>
            <string>C2-美国</string>
            <string>C3-阿尔及利亚</string>
            <string>C4-斯洛文尼亚</string>
        </array>
        <key>D组</key>
        <array>
            <string>D1-德国</string>
            <string>D2-澳大利亚</string>
            <string>D3-塞尔维亚</string>
            <string>D4-加纳</string>
        </array>
        <key>E组</key>
        <array>
            <string>E1-荷兰</string>
            <string>E2-丹麦</string>
            <string>E3-日本</string>
            <string>E4-喀麦隆</string>
        </array>
        <key>F组</key>
        <array>
            <string>F1-意大利</string>
            <string>F2-巴拉圭</string>
            <string>F3-斯洛伐克</string>
            <string>F4-新西兰</string>
        </array>
        <key>G组</key>
        <array>
            <string>G1-巴西</string>
            <string>G2-朝鲜</string>
            <string>G3-科特迪瓦</string>
            <string>G4-葡萄牙</string>
        </array>
        <key>H组</key>
        <array>
            <string>H1-西班牙</string>
            <string>H2-瑞士</string>
            <string>H3-洪都拉斯</string>
            <string>H4-智利</string>
        </array>
    </dict>
    </plist>

    3、.h

    #import <UIKit/UIKit.h>
    
    @interface CQ24ViewController : UITableViewController<UISearchBarDelegate>
    // 表数据
    @property (strong,nonatomic) NSDictionary *dictData;
    // 表数据分组名集合
    @property (strong,nonatomic) NSArray *listGroupname;
    
    @end

    4、.m

    #import "CQ24ViewController.h"
    
    @interface CQ24ViewController ()
    
    @end
    
    @implementation CQ24ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        NSBundle *mainBundle = [NSBundle mainBundle];
        NSString *plistPath = [mainBundle pathForResource:@"team_dictionary" ofType:@"plist"];
        
        // 1、初始化表格数据dictData
        self.dictData = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
        // 2、初始化分组名称,排序
        NSArray *tempList = [self.dictData allKeys];
        self.listGroupname = [tempList sortedArrayUsingSelector:@selector(compare:)];
        
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
    }
    
    #pragma mark 返回分组数
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        // 1、获取分组名称
        NSString *groupName = [self.listGroupname objectAtIndex:section];
        // 2、将分组名称作为key,从字典中取出分组数据
        NSArray *listTeams = [self.dictData objectForKey:groupName];
        return [listTeams count];
        
    }
    #pragma mark 填充每个节的Cell
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 1、加载一个cell
        static NSString *CellIdentifier = @"CellIdentifier";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }
        // 2、获取选择的节
        NSUInteger section = [indexPath section];
        // 3、获取节名称
        NSString *groupName = [self.listGroupname objectAtIndex:section];
        // 4、获取节数据
        NSArray *listTeams = [self.dictData objectForKey:groupName];
        // 5、获取选中节中的行索引
        NSUInteger row = [indexPath row];
        // 6、设置cell中的text
        cell.textLabel.text = [listTeams objectAtIndex:row];
        return cell;
    }
    #pragma mark 节数
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return self.listGroupname.count;
    }
    #pragma mark 设置节title
    -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    {
        NSString *groupName = [self.listGroupname objectAtIndex:section];
        return groupName;
    }
    #pragma mark 索引
    - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
    {
        // 1、存在索引的集合
        NSMutableArray *listTitles = [[NSMutableArray alloc] initWithCapacity:[self.listGroupname count]];
        // 2、初始化索引集合
        for (NSString *item in self.listGroupname) {
            NSString *title = [item substringToIndex:1];
            [listTitles addObject:title];
        }
        return listTitles;
    }
    
    @end
  • 相关阅读:
    LinkedBlockingQueue 单向链表实现的阻塞队列
    ArrayBlockingQueue 实现定时推送数据
    前台接收后端的JsonArray,循环输入页面表格
    一个常用的文件操作类
    DelayQueue 延时获取元素的无界阻塞队列
    单例设计模式
    使用SQL Server Data Tools (SSDT)比较和同步两个数据库的架构或者数据
    Entity Framework技能知识点测试2
    JS设置localStorage有效期
    Entity Framework技能知识点
  • 原文地址:https://www.cnblogs.com/cqchen/p/3766600.html
Copyright © 2020-2023  润新知