iOS 之 UITableView 使用索引

 在開發app中,經常會使用到UITableView,今天無聊做了一個demoUITableView顯示索引。 顯示索引實現的委託方法主要是:

//返回section的個數

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

//返回索引數組

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

//返回每個索引的內容

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

//響應點擊索引時的委託方法

-(NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index


.h文件:

1
2
3
4
5
#import <UIKit/UIKit.h>
 
@interface CContactListViewController : UITableViewController
 
@end

  .m文件:

//
//  CContactListViewController.m
//  Contact
//
//  Created by Carl on 13-6-26.
//  Copyright (c) 2013年 contact..com. All rights reserved.
//
 
#import "CContactListViewController.h"
 
@interface CContactListViewController ()
@property NSMutableArray * dataSource, * dataBase;
@end
 
@implementation CContactListViewController
 
- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
 
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;
  
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
     
    self.navigationItem.rightBarButtonItem = self.editButtonItem;
     
    UISearchBar * searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 0)];
    searchBar.translucent = YES;
    searchBar.barStyle = UIBarStyleBlackTranslucent;
    searchBar.showsCancelButton = YES;
    [searchBar sizeToFit];
    [self.tableView setTableHeaderView:searchBar];
     
    //改變索引的顏色
    self.tableView.sectionIndexColor = [UIColor blueColor];
    //改變索引選中的背景顏色
    self.tableView.sectionIndexTrackingBackgroundColor = [UIColor grayColor];
 
     
     
    //索引數組
    _dataSource = [[NSMutableArray alloc] init] ;
     
    //tableview 數據源
    _dataBase = [[NSMutableArray alloc] init] ;
     
    //初始化數據
    for(char c = 'A'; c <= 'Z'; c++ )
    {
        [_dataSource addObject:[NSString stringWithFormat:@"%c",c]];
        [_dataBase addObject:[NSString stringWithFormat:@"%c",c]];
        [_dataBase addObject:[NSString stringWithFormat:@"%c",c]];
        [_dataBase addObject:[NSString stringWithFormat:@"%c",c]];
    }
     
     
}
 
 
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    NSLog(@"viewWillAppear");
}
 
-(void)viewDidAppear:(BOOL)animated
{
    NSLog(@"viewDidAppear");
    [super viewDidAppear:animated];
     
     
    //取消選中的cell
    NSArray * indexPaths = [self.tableView indexPathsForSelectedRows];
     
    for(NSIndexPath * indexPath in indexPaths)
    {
        [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
    }
 
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
#pragma mark - Table view data source
 
 
 
//返回索引數組
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return _dataSource;
}
 
//響應點擊索引時的委託方法
-(NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    NSInteger count = 0;
     
    NSLog(@"%@-%d",title,index);
     
    for(NSString *character in _dataSource)
    {
        if([character isEqualToString:title])
        {
            return count;
        }
        count ++;
    }
    return 0;
}
 
 
//返回section的個數
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
 
    // Return the number of sections.
    return [_dataSource count];
}
 
//返回每個索引的內容
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return [_dataSource objectAtIndex:section];
}
 
//返回每個section的行數
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
 
    return 3;
}
 
 
//cell內容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
     
    if(cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
     
    cell.textLabel.text = [_dataBase objectAtIndex:indexPath.section * 3 + indexPath.row];
     
    return cell;
}
 
 
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
 
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
}
 
 
 
#pragma mark - Table view delegate
 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     
}
 
@end

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