当前位置:文档之家› iOS学习之分段Table

iOS学习之分段Table

iOS学习之分段Table
iOS学习之分段Table

iOS学习之分段Table View的使用(Grouped样式表格)

那么开始吧。

1、新建项目

新的一个名称为TableViewGrouped的Single View Application项目,打开项目的xib文件,拖拽TableView控件到xib文件中,摆正位置。

2、给新建的TableView找到他的归属

选中新添的TableView ,Connection Inspector,找到delegate和datasource,从它们右边的圆圈拉线到Files Owner图标上,参考上篇的第3步:

3、设置Table View的属性为Grouped样式

4、导入plist文件

从其他文件夹导入Provineces.plist文件,这个文件我会传到源代码里,大家都能方便使用了,包括全国30个省份和城市,还有城市的区也有。

5、添加.h .m的实现代码。

.h文件添加一个property

[cpp]view plaincopy

1.#import

2.

3.@interface ViewController : UIViewController

4.@property (strong, nonatomic) NSArray *provinces;

5.@end

第一步从Plist读取出数据,第二步给Table添加数据。

在viewDidLoad读取Plist,plist是个array类型的,所以使用Array读取。

.m文件的实现。

[cpp]view plaincopy

1.@implementation ViewController

2.@synthesize provinces;

3.

4.- (void)viewDidLoad

5.{

6. [super viewDidLoad];

7.// Do any additional setup after loading the view, typically from a nib.

8. NSBundle *bundle = [NSBundle mainBundle];

9. NSString *plistPath = [bundle pathForResource:@"Provineces" ofType:@"pli

st"];

10. NSMutableArray *array=[[NSMutableArray alloc] initWithContentsOfFile:p

listPath];

11. self.provinces = array;

12.

13.}

实现TableView表格部分,下面这些方法看方法名就能大概明白意思。

这个方法用来告诉表格有几个分组

[cpp]view plaincopy

1.- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

2.return [provinces count];

3.}

?这个方法告诉表格第section个分段有多少行

[cpp]view plaincopy

1.- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInt

eger)section {

2. NSArray *cities = [[provinces objectAtIndex:section]objectForKey:@"C

itys"];

3.return [cities count];

4.}

?这个方法用来告诉某个分组的某一行是什么数据,返回一个UITableViewCell

[cpp]view plaincopy

1.- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPat

h:(NSIndexPath *)indexPath {

2. NSUInteger section = [indexPath section];

3. NSUInteger row = [indexPath row];

4.

5.

6. NSArray *cities = [[provinces objectAtIndex:section]objectForKey:@"Citys

"] ;

7.

8.

9.static NSString *GroupedTableIdentifier = @"cell";

10. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:

11. GroupedTableIdentifier];

12.if (cell == nil) {

13. cell = [[UITableViewCell alloc]

14. initWithStyle:UITableViewCellStyleDefault

15. reuseIdentifier:GroupedTableIdentifier];

16. }

17.

18.//给Label附上城市名称 key 为:C_Name

19. cell.textLabel.text = [[cities objectAtIndex:row] objectForKey:@"C_Name

"];

20.return cell;

21.}

?这个方法用来告诉表格第section分组的名称

[cpp]view plaincopy

1.- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NS

Integer)section {

2. NSString *provincName = [[provinces objectAtIndex:section] objectForKey:

@"p_Name"];

3.return provincName;

4.}

?重点介绍下这个方法:

[cpp]view plaincopy

1.- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

2.//返回省份的数组

3. NSMutableArray *array = [NSMutableArray arrayWithCapacity:35];

4.for (NSDictionary *dict in provinces) {

5. [array addObject:[dict objectForKey:@"p_Name"]];

6. }

7.return array;

8.}

返回所有省份名称的数组,通过点击右边的省份名称能快速定位到这个省份的城市,也就是快速定位到这个section。

OK,运行。效果如下:

试试改成plain样式的分段TableView看看:

以上例子的全部

相关主题
文本预览
相关文档 最新文档