加入指数(IOS开发)

该指数是用来协助查询。

原则上:

- 索引的标题是不完全一样的标题显示;

- 指数应该具有一定的代表性,它可表示一组数据;

- 假设索引列表视图。在一般情况下不再使用扩展视图。

(easy指向)

会又一次到的数据源方法:

tableView: numberOfRowsInSection: ------获取某节的行数

tableView:cellForRowAtIndexPath: -------Cell数据的实现

numberofSectionInTableView: ----------获取节数

tableView:titleForHeaderInSection: --------节标题

sectionIndexTitlesForTableView: --------获取索引

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl5YWt1bjE5OTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSBundle *bundle = [NSBundle mainBundle];
    NSString *plistPath = [bundle pathForResource:@"team_dictionary"
                                           ofType:@"plist"];

    // 获取属性列表文件里的所有数据
    self.dicData = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
    NSArray *tempList = [self.dicData allKeys];
    // 对key进行排序
    // selector为SEL类型,sortedArrayUsingSelector方法的參数必须是selector
    self.listGroupname = [tempList sortedArrayUsingSelector:@selector(compare:)];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark 重写数据源方法
- (NSInteger) tableView: (UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // 依照节索引从小组名数组中获得组名
    NSString *groupName = [self.listGroupname objectAtIndex:section];
    // 将组名作为key,从字典中取出球队数组集合
    // 由于存储的时候是哈希结构
    NSArray *listTeams = [self.dicData objectForKey:groupName];
    // 这一节一共同拥有多少球队
    return [listTeams count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    // 获得选择的节 A组即第1节
    NSUInteger section = [indexPath section];
    // 获得选择节中选中的行索引 -- A组第1、第2.。

。

NSUInteger row = [indexPath row];
    // 依照节索引从小组名数组中获得组名 -- A组
    NSString *groupName = [self.listGroupname objectAtIndex:section];
    // 将组名作为key,从字典中取出球队数组集合
    NSArray *listTeams = [self.dicData objectForKey:groupName];

    cell.textLabel.text = [listTeams objectAtIndex:row];
    return cell;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // 该节行数
    return [self.listGroupname count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    // 该节的节头
    NSString *groupName = [self.listGroupname objectAtIndex:section];
    return groupName;
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    // 加入索引
    NSMutableArray *listTitles = [[NSMutableArray alloc] initWithCapacity:[self.listGroupname count]];
    // 把A组改为A
    for (NSString *item in self.listGroupname) {
        NSString *title = [item substringToIndex:1]; // 获取的第一个字符
        [listTitles addObject: title];  // 字符串数组追加的最后位置
    }
    return listTitles;
}

@end

注意:

在这个故事中要配置版本tableview委托协议。。!!

时间: 2024-10-20 14:05:23

加入指数(IOS开发)的相关文章

iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件.远程控制事件等展开学习: iOS事件简介 触摸事件 手势识别 运动事件 远程控制事件 iOS事件 在iOS中事件分为三类: 触摸事件:通过触摸.手势进行触发(例如手指点击.缩放) 运动事件:通过加速器进行触发(例如手机晃动) 远程控制事件:通过其他远程设备触发(例如耳机控制

iOS开发之手势识别汇总

iOS开发之手势识别汇总 iOS开发中手势识别有六种: 轻击手势(TapGestureRecognizer), 轻扫手势 (SwipeGestureRecognizer), 长按手势(LongPressGestureRecognizer), 拖动手势(PanGestureRecognizer), 捏合手势(PinchGestureRecognizer), 旋转手势(RotationGestureRecognizer), 1,轻击手势(TapGestureRecognizer) UITapGest

iOS开发中常用的数学函数

/*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(@"结果 %.f", pow(3,2)); //result 9 NSLog(@"结果 %.f", pow(3,3)); //result 27 //开平方运算 NSLog(@"结果 %.f", sqrt(16)); //result 4 NSLog(@"结果 %.f", sqrt(81)); //result 9 //进一 NSLog(@&q

斯坦福IOS开发第五课(第二部分)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27845257 作者:小马 五 代码示例 上面讲到的知识点在这个示例都有涉及.另外我这里也只是分析部分重要的代码,更多的知识了解请自行下载代码(文章最下面有地址)并结合公开课一起看. 新建一个single view的工程,然后新增一个视图类,叫FaceView,如下图所示: 然后我们在storyboard里拖进来一个通用的视图控件,作为上面那个视图类对应的视图,如下图所示:    

转发:iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

-- iOS事件全面解析 转载来自崔江涛(KenshinCui) 链接:http://www.cnblogs.com/kenshincui/p/3950646.html 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件.远程控制事件等展开学习: iOS事件简介 触摸事件 手势识别 运动事件 远程控制事件 iOS事件 在iOS中事件分为三类: 触摸事

iOS开发之手势识别

感觉有必要把iOS开发中的手势识别做一个小小的总结.在上一篇iOS开发之自定义表情键盘(组件封装与自动布局)博客中用到了一个轻击手势,就是在轻击TextView时从表情键盘回到系统键盘,在TextView中的手是用storyboard添加的.下面会先给出如何用storyboard给相应的控件添加手势,然后在用纯代码的方式给我们的控件添加手势,手势的用法比较简单.和button的用法类似,也是目标动作回调,话不多说,切入今天的正题.总共有六种手势识别:轻击手势(TapGestureRecogniz

iOS开发中六种手势识别

iOS开发中手势识别有六种: 轻击手势(TapGestureRecognizer), 轻扫手势 (SwipeGestureRecognizer), 长按手势(LongPressGestureRecognizer), 拖动手势(PanGestureRecognizer), 捏合手势(PinchGestureRecognizer), 旋转手势(RotationGestureRecognizer), 1,轻击手势(TapGestureRecognizer) UITapGestureRecognizer

iOS开发相关图书推荐

Objective-C编程之道:iOS设计模式解析 作      者 [美] Carlo Chung 著:刘威 译 出 版 社 人民邮电出版社 出版时间 2011-11-01 版      次 1 页      数 297 印刷时间 2011-11-01 开      本 16开 纸      张 胶版纸 印      数 1 I S B N 9787115265869 推荐指数:★★★★★ 购买地址:立即购买 iOS 8开发指南赠光盘1张 作      者 管蕾 著 出 版 社 人民邮电出版社

iOS开发:控制器间的数据传递

在iOS开发中遇到的控制器间的数据传递主要有两种情况:顺传递与逆传递.顺传递是指数据的传递方向和控制器的跳转方向相同(如图1):逆传递是指数据的传递方向和控制器的跳转方向相反(如图2).这里分别介绍这两种传递方式的具体做法. 顺传递 如果是用的SB,顺传递较简单,只需在A控制器的prepareForSegue:sender:方法中根据segue参数取得destinationViewController,也就是目标控制器C,直接给控制器C传递数据.从A传来的数据要在C的viewDidLoad方法中

李洪强iOS开发Swift篇—03_字符串和数据类型

李洪强iOS开发Swift篇—03_字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容  let website = "http://www.wendingding.com" 1.字符串的常见操作 (1)用加号 + 做字符串拼接 let scheme = "http://" let path = “www.wendingding.com” let website = scheme + path // websi