浅谈ios设计之使用表格UITableVIew设计通讯录的方法

思路;首先自作一份或者网上下载一份通讯录的   plist   文件
之后创建工程和显示通讯录的表格
 
 
代码实现如下(全部代码)
 
1、创建导航栏和根视图
AppDelegate.h
#import <UIKit/UIKit.h>

#import "SortednameTableViewController.h"//导头文件(用于创建根视图)
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
 
 
 
AppDelegate.m
#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   //创建根视图(将SortednameTableViewController作为根视图)(UINavigationController 用于创建导航栏)
    self.window.rootViewController=[[UINavigationController alloc]initWithRootViewController:[[SortednameTableViewController alloc]initWithStyle:UITableViewStyleGrouped]];
    return YES;
}
2、表格部分(就是创建的类 继承UITableViewController)
SortednameTableViewController.h

#import <UIKit/UIKit.h>

@interface SortednameTableViewController : UITableViewController
//接收文件的字典
@property(strong,nonatomic)NSDictionary *Dictionary;
//接收字典关键字(A~Z)的集合
@property(strong,nonatomic)NSArray *KeysArray;
@end
 
SortednameTableViewController.m

#import "SortednameTableViewController.h"

@interface SortednameTableViewController ()

@end

@implementation SortednameTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
  //设置视图背景色
    self.view.backgroundColor=[UIColor yellowColor];
    //页面标题
    self.title=@"通讯录";
   
    //导入存通讯录的plist文件的路径
    NSString  *path=[[NSBundle mainBundle]pathForResource:@"sortednames" ofType:@"plist"];
    //接收通讯录文件
    self.Dictionary=[NSDictionary dictionaryWithContentsOfFile:path];
    //对字典中的关键字进行排序(选择器排序法)
    self.KeysArray=[self.Dictionary.allKeys sortedArrayUsingSelector:@selector(compare:)];
   
    //重用表格唯一标识
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"reuseIdentifier"];
 
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
//表格分区数目
#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
//#warning Incomplete implementation, return the number of sections
    return self.KeysArray.count;//关键字的数量
}
//每个分区的行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//#warning Incomplete implementation, return the number of rows
    NSString *key=self.KeysArray[section];
    NSArray *arr=self.Dictionary[key];//获取关键字对应的Value值
   
   
    return arr.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier" forIndexPath:indexPath];
    NSString *key=self.KeysArray[indexPath.section];//分区的关键字
    NSArray *keyArray=self.Dictionary[key];//关键字对应的value值
    cell.textLabel.text=key;
    cell.textLabel.text=keyArray[indexPath.row];
    cell.textLabel.textAlignment=NSTextAlignmentCenter;//对齐方式
    cell.textLabel.textColor=[UIColor blueColor];//字体颜色
   
    return cell;
}

//设置分区标题
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UILabel *label=[[UILabel alloc]init];
    label.backgroundColor=[UIColor redColor];
    label.text=self.KeysArray[section];//分区标题为分区对应的关键字
    label.font=[UIFont systemFontOfSize:30];
    label.textAlignment=NSTextAlignmentCenter;
    return label;
}
-(NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return self.KeysArray;//显示(A~Z)

}
//设置每个分区开头
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    NSString *str=self.KeysArray[section];
    return str;
}
//设置每个分区结尾标题
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
   return @"end";
}

//设置分区高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
   
    return 50;
}
 
3、效果图 
 
 
posted @ 2016-03-18 17:41  右手指尖轻轻触  阅读(255)  评论(0编辑  收藏  举报