IOS学习:UITableView使用详解3 分组表的简单使用

IOS学习:UITableView使用详解3 分组表的简单使用

使用分组表和使用普通表的方法差不多,他们的不同点有以下几点:

1.分组表的属性必须设置为Grouped的,而不是plain

2.分组表的数据源方法当中numberOfSectionsInTableView:返回分组的个数。

3.可以设置tableView:titleForHeaderInSection:返回每个分组的名称。

4.可以使用方法sectionIndexTitlesForTableView:建立一个分组表的右侧索引,便于查找。

以下通过一个案例进行分组表使用的讲解:

新建一个工程使用sigleview,名称为GroupTableView,然后讲一个表视图拖放到视图控制器里面,将表视图的名称设置为Gouped,结果如图所示:

在这里我们使用一个plist文件导入数据,里面显示了全国各个省以及每个省的城市,其结构如图所示:

在头文件当中添加数据源和表视图委托,使用一个字典和一个数组,

#import <UIKit/UIKit.h>

 

@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>

@property(copy,nonatomic)NSDictionary *dictionary;

@propertyNSArray *province;

@end

加载视图后,读入数据源,因此在viewDidLoad方法当中添加一下代码:

NSBundle *bundle=[NSBundlemainBundle];

NSURL *plistURL=[bundle URLForResource:@"provinceCities"withExtension:@"plist"];

dictionary =[NSDictionarydictionaryWithContentsOfURL:plistURL];

province = [dictionaryallKeys];

将数据从plist文件当中读入字典结构,它的key就是各个省份的名称,省份下的城市的名称组成的数组就是key的value。

调用allKeys方法将所有的省份名称存入province数组,便于使用。

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    NSString *str=[provinceobjectAtIndex:section];

    NSArray *temp=[dictionaryobjectForKey:str];

    return [temp count];

}

该委托方法先使用section查找出要找的组的下标,使用它在province数组当中找出相应的名称,然后根据这个名称找出对应的城市名称数组,返回该数组的长度。

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return [provincecount];

}

返回分组的组的数目。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    staticNSString *identifier=@"identifier";

    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier];

    if(cell==nil)

    {

        cell=[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:identifier];

    }

    int row=[indexPath row];

    int section=[indexPath section];

    NSString *pro=[provinceobjectAtIndex:section];

    cell.textLabel.text=[[dictionaryobjectForKey:pro] objectAtIndex:row];

    return cell;

}

该方法返回各个单元格。

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

{

    return [provinceobjectAtIndex:section];

}

该方法返回每个分组的标题

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

{

    returnprovince;

}

返回用于建立索引的数组。

效果如图所示

 

posted @ 2014-01-14 20:12  湖心北斗  阅读(1414)  评论(0编辑  收藏  举报