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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值