zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Gogs http和ssh地址显示localhost的问题
    SQL Server从读写频繁的大表中删除大批量数据
    Java Spring Boot: Unable to determine jdbc url from datasource
    NPOI导入Excel日期格式的处理
    手把手教你整合最优雅SSM框架
    JDBC链接数据库MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法
    Vim 入门教程
    jquery.i18n.properties前端国际化方案
    生产者消费者模式中条件判断是使用while而不是if
    ThreadPoolExecutor 中的 shutdown() 、 shutdownNow() 、 awaitTermination() 的用法和区别
  • 原文地址:https://www.cnblogs.com/cqchen/p/3766600.html
Copyright © 2011-2022 走看看