iOS tableView分區+索引

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;
}

@end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章