欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[IOS]UITableView分区+索引显示

程序员文章站 2022-06-01 10:26:10
...

效果:

[IOS]UITableView分区+索引显示

步骤:

1.创建一个ViewController,New File->Cocoa Touch->Objective-C class->Class:ViewController,Subclass of:UIViewController

2.打开xib,在view中添加TableView,并将TableView的两个属性拖到File's Owner中,

可以设置tableview的分区样式,选择style

3.ViewController.h:

#import <UIKit/UIKit.h> @interface newViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> @property (retain, nonatomic) IBOutlet UITableView *tableView; @property(retain,nonatomic)NSDictionary *dic; @property(retain,nonatomic)NSArray *keys; @end
4.ViewController.m:

#import "newViewController.h"  @interface newViewController ()  @end  @implementation newViewController  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];     if (self) {         // Custom initialization     }     return self; }  - (void)viewDidLoad {     [super viewDidLoad];     NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames" ofType:@"plist"];     self.dic = [NSDictionary dictionaryWithContentsOfFile:path];          self.keys = [self.dic allKeys];     self.keys = [self.keys sortedArrayUsingSelector:@selector(compare:)]; }  //tableView有多少分区 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {     return [self.keys count]; }  //每个分区对应多少行 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {     NSString *key = self.keys[section];//通过第几个分区拿到对应的key     NSArray *arr = [self.dic objectForKey:key];//通过这个key获得对应的Array     return [arr count]; }  -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {     static NSString *str = @"str";     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:str];          if (cell == nil) {         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str];     }     int section = [indexPath section];     int row = [indexPath row];          NSString *key = self.keys[section];     NSArray *arr = [self.dic objectForKey:key];     cell.textLabel.text = arr[row];     return cell; } //在每个分区上显示什么内容 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {     return self.keys[section]; }  - (void)didReceiveMemoryWarning {     [super didReceiveMemoryWarning];     // Dispose of any resources that can be recreated. } //设置索引 -(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {     return self.keys; }  - (void)dealloc {     [_tableView release];     [self.keys release];     [self.dic release];     [super dealloc]; } @end
























本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366428,如需转载请自行联系原作者