博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 之 UITableView 使用索引
阅读量:5878 次
发布时间:2019-06-19

本文共 5059 字,大约阅读时间需要 16 分钟。

hot3.png

     在开发app中,经常会使用到UITableView,今天无聊做了一个demo,UITableView显示索引。 显示索引实现的委托方法主要是:

//返回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文件:

#import 
@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

转载于:https://my.oschina.net/CarlHuang/blog/140942

你可能感兴趣的文章
iOS - OC SQLite 数据库存储
查看>>
PHP-mysqllib和mysqlnd
查看>>
Redis常用命令
查看>>
NeHe OpenGL教程 第三十五课:播放AVI
查看>>
Linux下ping命令、traceroute命令、tracert命令的使用
查看>>
js replace,正则截取字符串内容
查看>>
socket
查看>>
Highcharts使用表格数据绘制图表
查看>>
Thinkphp5笔记三:创建基类
查看>>
hdu5373
查看>>
4.单链表的创建和建立
查看>>
Android 好看的搜索界面,大赞Animation
查看>>
查询反模式 - GroupBy、HAVING的理解
查看>>
上班族的坐姿
查看>>
ubuntu 12.04 下面安装vmware workstation 8.0.4
查看>>
[原创]FineUI秘密花园(二十三) — 树控件概述
查看>>
【Java学习笔记】如何写一个简单的Web Service
查看>>
如何解决This system is not registered with RHN.
查看>>
Cocos2d-x学习笔记(两)Cocos2d-x总体框架
查看>>
拆解探索MagSafe电源接口结构和指示灯变颜色原理
查看>>