手机通讯录的实现

来源:互联网 发布:国家网络安全法文件 编辑:程序博客网 时间:2024/05/05 10:17
<pre name="code" class="objc">首先重写UITableViewCell的初始化方法:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];    if (self) {        // Initialization code        self.photoView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 5, 80, 80)];        _photoView.layer.cornerRadius = 40;        _photoView.layer.masksToBounds = YES;        [self.contentView addSubview:_photoView];        [_photoView release];                self.nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(120, 5, 60, 35)];        [self.contentView addSubview:_nameLabel];        [_nameLabel release];                self.ageLabel = [[UILabel alloc] initWithFrame:CGRectMake(200, 5, 40, 35)];        [self.contentView addSubview:_ageLabel];        [_ageLabel release];                self.genderLabel = [[UILabel alloc] initWithFrame:CGRectMake(260, 5, 40, 35)];        [self.contentView addSubview:_genderLabel];        [_genderLabel release];                self.phoneNumberLabel = [[UILabel alloc] initWithFrame:CGRectMake(120, 50, 200, 35)];        [self.contentView addSubview:_phoneNumberLabel];        [_phoneNumberLabel release];    }    return self;}
@interface RootViewController ()<UITableViewDataSource,UITableViewDelegate>@property (nonatomic, retain) NSDictionary *dic;@property (nonatomic, retain) NSArray *titles;@end@implementation RootViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization        self.dic =  [self readDataFromPlist];        self.titles = [[self.dic allKeys] sortedArrayUsingSelector:@selector(compare:)];    }    return self;}- (NSDictionary *)readDataFromPlist{    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"AddressBook-2" ofType:@"plist"];    NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:filePath];    return dic;}- (void)loadView{    UITableView *tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;    tableView.separatorColor = [UIColor lightGrayColor];    tableView.dataSource = self;    tableView.delegate = self;    tableView.rowHeight = 90;    self.view = tableView;    [tableView release];}- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view.    self.navigationItem.title = @"所有联系人";}#pragma mark - UITableViewDataSource//设置行数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return [self.dic[self.titles[section]] count];}//创建cell- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static NSString *identifier = @"mark";    StudentCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];    if (!cell) {        cell = [[[StudentCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier] autorelease];    }    NSDictionary *dic = self.dic[self.titles [indexPath.section]][indexPath.row];    cell.photoView.image = [UIImage imageNamed:[dic objectForKey:@"imageName"]];    cell.nameLabel.text = [self.dic[self.titles [indexPath.section]][indexPath.row] objectForKey:@"name"];    cell.ageLabel.text = [self.dic[self.titles [indexPath.section]][indexPath.row] objectForKey:@"age"];    cell.genderLabel.text = [self.dic[self.titles [indexPath.section]][indexPath.row] objectForKey:@"gender"];    cell.phoneNumberLabel.text = [self.dic[self.titles [indexPath.section]][indexPath.row] objectForKey:@"phoneNumber"];    return cell;}//设置分区- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{    return [self.titles count];}//页眉- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{    return self.titles[section];}//索引值- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{    return self.titles;}#pragma mark - UITableViewDelegate//当cell被选中时触发- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    NSString *str = [self.dic[self.titles [indexPath.section]][indexPath.row] objectForKey:@"phoneNumber"];    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel://%@",str]]];    //2、用UIWebView来实现,打电话结束后会返回当前应用程序:    UIWebView *callPhoneWebVw = [[UIWebView alloc] init];    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"tell://%@",str]]];    [callPhoneWebVw loadRequest:request];}
通过以上步骤,可实现简单通讯录.
0 1
原创粉丝点击