[IOS]UITableView分区+索引显示
程序员文章站
2022-06-01 10:26:10
...
效果:
步骤:
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,如需转载请自行联系原作者