精华内容
下载资源
问答
  • 在IOS旅途的上一站,我们共同学习了自定义表视图,这一站,来介绍下表视图中常用的索引分组。 之前我们介绍过的例子中,表视图都只有一个节。一个表视图可以有多个节(Section),节有头有脚,是索引分组的前提...

    问君何忧,几多愁,絮纷飞,似雨绵绵。

    君曰:举杯望月,忧,忧,忧,杯中无酒,愁,愁,愁。

    子曰:自寻烦恼,无可救乎哉。


    在IOS旅途的上一站,我们共同学习了自定义表视图,这一站,来介绍下表视图中常用的索引、分组。

    之前我们介绍过的例子中,表视图都只有一个节。一个表视图可以有多个节(Section),节有头有脚,是索引和分组的前提。

    现在我们通过例子TableSectionSample来一步步讲解它的实现。

    注:索引的正确使用原则如下:

    • 索引标题不能与显示的标题完全一样。
    • 索引标题应具有代表性,能代表一个数据集合。
    • 如果采用了索引列表视图,一般情况下就不再使用扩展视图。

    第一步,同以前一样,不再详细说明:

    创建Single View Application工程,命名为TableSectionSample;打开Main.storyboard拖拽一个TableView到View Controller上,设置data source和delegate为ViewController;拖拽一个Table View Cell到TableView上,设置Identifier为Cell;改ViewController类实现UITableViewDataSource和UITableViewDelegate协议。

    注:如果ViewController继承自UITableViewController类,那么对应的Interface(故事板或nib)中,TableView不应该在View下面,要删除原View后再添加TableView,否则会报错“loaded the '' nib but didn't get a UITableView”。

    第二步,设置数据源:

    上一站中我们说过正常数据源应该是来自文件或db,这里,我们使用plist文件。plist全称parameter list,一般用于存储用户设置和捆绑信息,使用起来非常方便。如果当xml理解,是不是就容易明白了呢。

    在编写数据源代码前,我创建了Country.plist文件来存储国家信息。创建方式:File→New→File→Resource→Property List。Country.plist文件如图:

    1

    如图,第一层是一个字典,每个item的key是洲名,value是一个字符串数组,存储的是这个大洲的国家名称。
    @interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
    @property (nonatomic, strong) NSDictionary *countryList;//国家列表
    @property (nonatomic, strong) NSArray *continentList;//大洲列表
    @end

    - (void)viewDidLoad {
    [super viewDidLoad];
    NSString *dataSourcePath = [[NSBundle mainBundle] pathForResource:@"Country" ofType:@"plist"];//①
    self.countryList = [NSDictionary dictionaryWithContentsOfFile:dataSourcePath];//②
    self.continentList = [self.countryList allKeys];//③
    }

    ①取得Country.plist路径。该代码是获取应用程序内可操作资源文件路径的固定格式,第一个参数为文件名称,第二个参数时文件扩展名;
    ②通过路径获取文件内容,赋给countryList;
    ③plist中的键值为洲名,也就是我们的节名,赋给continentList。

    第三步,分节:

    以下是节的三个相关函数,分别设置节数、节头、节脚:

    // 用于返回节数,默认返回1
    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return [self.continentList count];
    }
    // 返回节头标题
    -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return [self.continentList objectAtIndex:section];
    }
    // 返回节脚题目
    -(NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
    return @"洲";
    }

    设置每一节的行数和数据,方式和普通表视图一样,只是多了取当前所在节:

    // 返回第section节的行数
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    NSString *continentKey = [self.continentList objectAtIndex:section];
    NSInteger countryCount = [[self.countryList objectForKey:continentKey] count];
    return countryCount;
    }
    // 设置某节某行数据,当前节和当前行取自indexPath.section和indexPath.row
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    NSString *continentKey = [self.continentList objectAtIndex:indexPath.section];
    NSString *countryName = [[self.countryList objectForKey:continentKey] objectAtIndex:indexPath.row];
    cell.textLabel.text = countryName;
    return cell;
    }

    运行一下,如下图,分节就做好了。

    3

    第四步,添加索引。(分节是添加索引的前提)

    索引其实就是节索引,分好节后,只需要设置节索引数组就好了,索引名称可以和节标题不同,不过它的顺序是一一对应的。设置节索引数组的方法为:sectionIndexTitlesForTableView:

    -(NSArray *) sectionIndexTitlesForTableView:(UITableView *)tableView{
    return self.continentList;//也可以重创建一个数组每一个索引另起名称。
    }

    运行一下,如图:

    4

    第五步,分组:

    最简单的分组,就是直接设置Style属性为Grouped即可。如图:

    5

    运行:

    6

    不过正常情况下,数据量大的不适合使用分组,数据量小的不适合使用索引。一般来说,分组我们会用于设置、登录这种页面,一般使用静态表完成。

    分组:

    1.在此我新创建了一个工程来实现分组,第一步和上面第一步是一样的,不再赘述。

    2.打开Main.storyboard,选择第一步中拖拽的Table View,打开其属性检查器,将Style改为Grouped,将Content设置为Static Cells,你会发现下面从Prototype Cells变为了Sections,选择你想要的组数,TableView上会自动显示出几组来,每一组默认有3个Cell,可以删改,每一个cell长什么样子,可以根据需求拖拽控件,设置控件属性绑定事件。

    7

    设置一个分组举一个例子说明,如图:

    8

    选择左侧View Controller Scence→View Controller→Table View→Table View Section,打开右侧属性检查器,可以设置这个组的行数,节头节脚显示内容。设置后如图中表示。

    从对象列表中拖拽控件到Cell上,我分别拖拽了一个Label和一个TextField,设置了属性,如图显示。还可以添加按钮绑定事件,和平时添加控件绑定控件是一样的。静态表即表示你现在看到的是什么样,运行时就是什么样子。

    9

    注:静态单元格只能在SDK内置的UITableViewController中使用,否则编译会报错“Static table views are only validwhen embedded in UITableViewController instances.”,即使你将View Controller改为继承UITableViewController。也就是要拖拽一个TableViewController,在其TableView上编辑静态单元格。这是一缺陷,暂时苹果还未解决。

    展开全文
  • 分组视图基本的原则有以下三钟 索引标题不能与显示的标题完全一样。 索引标题应具有代表性,能代表一个数据集合。 如果采用了索引列表视图,一般情况下就不再使用扩展图。 转载于:...

    分组视图基本的原则有以下三钟

    • 索引标题不能与显示的标题完全一样。
    • 索引标题应具有代表性,能代表一个数据集合。
    • 如果采用了索引列表视图,一般情况下就不再使用扩展图。

     

    转载于:https://www.cnblogs.com/oscar1987121/p/5233699.html

    展开全文
  • 本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代理方法的设计实现; 1.新建工程名为Partitation , File->New->Project ->single View Application -> next 2.添加协议和声明变量 ...

            本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代理方法的设计实现;

    1.新建工程名为Partitation , File->New->Project ->single View Application -> next


    2.添加协议和声明变量

    [cpp]  view plain copy
    1. #import <UIKit/UIKit.h>  
    2.   
    3. @interface PartitionViewController : UIViewController  
    4.           <UITableViewDelegate,UITableViewDataSource>  
    5. @property (strong,nonatomic) UITableView *partitationTableView;  
    6. @property (strong,nonatomic) UITableViewCell *partitionTableViewCell;  
    7. @property (strong,nonatomic) NSDictionary *dicData;  
    8. @property (strong,nonatomic) NSArray *arrayData;  
    9.   
    10. @end  


    3.添加plist文件,再到ViewDidLoad中初始化视图

    plist文件的添加


    [cpp]  view plain copy
    1. - (void)viewDidLoad  
    2. {  
    3.     [super viewDidLoad];  
    4.       
    5.     UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];  
    6.       
    7.     [self.view addSubview:navBar];  
    8.   
    9.     // Do any additional setup after loading the view, typically from a nib.  
    10.       
    11.     self.partitationTableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];  
    12.       
    13.     self.partitationTableView.delegate=self;  
    14.     self.partitationTableView.dataSource = self;  
    15.     [self.view addSubview:self.partitationTableView];  
    16.       
    17.     [self.view addSubview:self.partitationTableView];  
    18.       
    19. //    读取plist文件  
    20.     NSBundle *bundle = [NSBundle mainBundle];  
    21.     NSURL *plistURL = [bundle URLForResource:@"partitionInfo" withExtension:@"plist"];  
    22.       
    23.     NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfURL:plistURL];  
    24.     self.dicData = dictionary;  
    25.       
    26. //    读取字典中的key储存数组中  
    27.     NSArray *array = [self.dicData allKeys];  
    28.     self.arrayData = array;  
    29.       
    30. }  

    4.实现委托方法

    前面我们做的都是return 1,表示返回的是一个分区,现在是从数组中读取字典中的plist文件有几个分区

    [cpp]  view plain copy
    1. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  
    2. {  
    3.     return [self.arrayData count];  
    4. }  


    [cpp]  view plain copy
    1. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
    2. {  
    3. //    从数组中读取分区的对应的key  
    4.     NSString *stringDataKey = [self.arrayData objectAtIndex:section];  
    5. //    根据读取的key从该分区字典中读取数据元素  
    6.     NSArray *arraySection = [self.dicData objectForKey:stringDataKey];  
    7. //    返回的是特定分区的行数  
    8.     return [arraySection count];  
    9. }  
    根据索引路径获取分区行,需要使用哪个值在从字典中取出来
    [cpp]  view plain copy
    1. -(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
    2. {  
    3.     NSInteger section = [indexPath section];  
    4.     NSInteger row = [indexPath row];  
    5.       
    6.     NSString *key = [self.arrayData objectAtIndex:section];  
    7.     NSArray *arraySection = [self.dicData objectForKey:key];  
    8.       
    9.     static NSString *partitation = @"partitation";  
    10.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:partitation];  
    11.       
    12.     if (cell==nil) {  
    13.         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:partitation];  
    14.     }  
    15.       
    16.     cell.textLabel.text = [arraySection objectAtIndex:row];  
    17.     return cell;  
    18. }  


    给每个分区指定可选标题值

    [cpp]  view plain copy
    1. -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section  
    2. {  
    3.     NSString *key = [self.arrayData objectAtIndex:section];  
    4.     return key;  
    5. }  

    运行下效果

      


    5.添加索引,当我们查询的东西有几万条向下拖动表视图很显然比较麻烦,添加索引之后可以直接跳到所选的分区

    [cpp]  view plain copy
    1. -(NSArray*)sectionIndexTitlesForTableView:(UITableView *)tableView  
    2. {  
    3.     return self.arrayData;  
    4. }  
    运行效果

      




    附上源代码:http://download.csdn.net/detail/duxinfeng2010/4419302

    展开全文
  • 在上一篇我们学习了如何使用建立一个简单的表视图.这一节,我就在上节的基础上添加一些 协议的实现函数,以便于能够实现分组分区和索引分区. 1.header 加入 分组名称: -(NSString *)tableView:(UITableView *)...

    在上一篇我们学习了如何使用建立一个简单的表视图.这一节,我就在上节的基础上添加一些 协议的实现函数,以便于能够实现分组分区和索引分区.

    1.header 加入 分组名称:

    -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

    {

        NSString *key = [keys objectAtIndex:section];

        

        return key;



    }

    除了这个函数之外,还有在尾部加入分组名称等.

    2.在屏幕的右侧实现索引:

    看似很高级,其实实现起来很简单:

    -(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

    {

        return keys;

    }


    3.实现搜索栏知识点由于知识点太多,小弟才疏学浅,所以先不介绍了.

    展开全文
  • sql2000 为给定视图创建索引

    千次阅读 2012-02-12 15:01:44
    视图的所有者可以随时创建索引,无论中是否有数据。可以通过指定限定的数据库名称,为另一个数据库中的视图创建索引。 语法 CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] IND
  • Oracle之创建、序列、索引视图

    千次阅读 2014-11-30 22:09:06
     · 如何创建并使用索引索引可以提高查询的性能  · 如何创建并使用视图视图是预定义的查询  · 闪回数据归档将一段时间内对表所做的改变保存 一、 1. 创建 可以使用 CREATE TABLE 语句创建,CREATE...
  • 2) 视图不能添加索引,查询视图效率会比添加索引慢一点点 3) 视图可以简化复杂查询 4) 视图利于提高安全性:把查询视图的权限给用户,不分配用户查询users的权限 2.视图的好处 1) 方便对复杂查询语句的处理 ...
  • 索引视图

    2010-05-04 14:22:00
    SQL Server 2008 联机丛书(2009 年 7 月)设计索引视图 视图也称为虚拟,因为视图所返回的结果集的一般格式与相同,都是由列和行组成,而且在 SQL 语句中引用视图的方式也与引用的方式相同。标准视图的结果...
  • 索引视图

    2017-04-25 17:16:48
    使用分组和排序字句进行数据检索时,可以显著减少分组和排序的时间 全文检索字段进行搜索优化   分类:主键索引(PRIMARY KEY) 唯一索引(UNIQUE) 常规索引(INDEX) 全文索引(FULLTEXT)   创建索引 ...
  • 对表视图进行分组与分区,便于用户对信息的查找。首先需要创建.plist的文件,包含所有的信息,便于表视图加载过程中数据的录入。用字典存储,以数组的方式获取表视图的数据。遵循UITableViewDelegate协议实现对表...
  • 视图性能优化——索引视图

    万次阅读 2014-11-12 10:35:44
    原文:索引视图
  • 索引视图

    2014-11-24 15:16:34
    第一,通过创建唯一性索引,可以保证数据库中每一行数据的唯一性。  第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。  第三,可以加速之间的连接,特别是在实现数据的参考完整性...
  • increment 字段约束2 清除中的记录3 索引3.1 普通索引3.2 唯一索引3.3 主键索引3.4 复合索引3.5 全文索引 (FULLTEXT INDEX)3.6 索引设计原则4 外键约束4.1 什么是外键约束4.2 创建外键约束4.3 删除外键5 视图5.1 ...
  • 数据库之视图索引

    千次阅读 2016-10-10 09:03:01
    数据库视图以及索引的概念和作用介绍
  • Mysql数据库的索引视图 一、 Mysql的索引 参考文档: 树的类型和结构:https://blog.csdn.net/xiaqunfeng123/article/details/52534468 https://blog.csdn.net/u012050154/article/details/76238475 ...
  • Mysql索引视图

    千次阅读 2020-01-06 19:59:15
    在数据库中,索引使数据库程序对整个进行扫描,以及物理标识这些值的数据页的逻辑指针清单 什么叫索引索引:快速的定位到你所需要的信息 优点:快速找到资源 缺点:占用空间,占用资源 索引有什么作用? ① ...
  • 操作索引视图

    2018-08-21 10:43:13
    我们在做学生信息管理系统的时候都有见过视图索引,但当时我们只是对它们停留在了一个表层的认识,并不知道他们具体还可以用来做什么。通过看数据库视频我对它们有了进一步的看法。 视图:选择性的查看具体的值...
  • SQL Server索引 - 索引(物化)视图 <... 索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图,所为物化就是几乎和一样,其数据也是会存储一份的(会占用硬盘空间,但是查询速度快,例如可以将count(...
  • 可以为中的单个列建立索引,也可以为一组列建立索引。 作用: (1)加速数据检索 (2)加速排序,分组,连接等操作 在使用ORDER BY和GROUP BY子句进行数据检索时,利用索引可以减少排序和分组的时间。 (3)...
  • 但是除了以外,数据库中还有很多其他的对象,例如索引视图、存储过程、触发器、游标、函数等。 这些数据库对象对于提高数据查询的效率、提升数据的安全性与完整性以及实现数据操作代码的共享性和数据操作的灵活...
  • Oracle 视图索引

    千次阅读 2018-02-06 20:55:07
    第五章 视图索引的操作5.1 视图的功能一个视图实际上就是封装了一条复杂的查询语句注:为了在当前用户模式中创建视图,要求数据库用户必须有create any view(创建任何视图)的权限。5.2 创建视图的语法create [or ...
  • 数据库视图索引

    2016-04-16 18:24:57
    视图视图是从一个或多个视图中导出的,这些视图称作该视图的基本视图的基本结构和数据都是建立在对基本的查询上。视图并不是一个真实的,只有其定义,而没有存储其恶空间。 创建视图视图在...
  • 表视图

    千次阅读 2013-12-15 14:55:32
    表视图中,分节、分组索引功能使我们展示的数据看起来更规整。 一、概述 1、表视图组成 在IOS中,表视图是最重要的视图。与表视图相关的一些概念如下: (1)表头视图表视图最上边的视图,用于展示表视图的...
  • 文章目录1、模式的定义与删除定义模式删除模式2、基本的定义、删除与修改定义定义的所属模式修改删除创建视图3、索引的建立与删除创建索引修改索引删除索引4、视图的创建与删除(未写)创建视图删除视图5...
  • 引用推荐博客、数据库网址 http://www.educity.cn/shujuku/1598602.html(希赛数据库学院) http://blog.csdn.net/kingzone_2008/article/details/8182792(索引) ...知识点一、伪列与伪 orac

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,534
精华内容 17,413
关键字:

索引表分组视图