通讯录
来源:互联网 发布:php财务管理系统 编辑:程序博客网 时间:2024/04/20 02:15
//// MainViewController.m// 通讯录//// Created by dllo on 15/8/7.// Copyright (c) 2015年 Clare. All rights reserved.//#import "MainViewController.h"#import "ChangeViewController.h"#import "SaveViewController.h"@interface MainViewController ()<UITableViewDataSource, UITableViewDelegate,SaveViewController,ChangeViewController>@property(nonatomic, retain)UITableView *tableView;@property(nonatomic, retain)NSMutableArray *personArr;@property(nonatomic, retain)NSIndexPath *currentIndexPath;@end@implementation MainViewController- (void)dealloc{ [_tableView release]; [_personArr release]; [_currentIndexPath release]; [super dealloc];}- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { [self createData]; } return self;}- (void)createData{ NSString *path = [[NSBundle mainBundle] pathForResource:@"StudentArr" ofType:@"plist"]; self.personArr = [[NSMutableArray alloc] initWithContentsOfFile:path]; }- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; self.navigationController.navigationBar.translucent = NO; self.title = @"通讯录"; // 添加联系人按钮 self.navigationItem.rightBarButtonItem= [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"1.png"] style:UIBarButtonItemStylePlain target:self action:@selector(rightButtonAction:)] autorelease]; self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64) style:UITableViewStylePlain]; self.tableView.rowHeight = 100; self.tableView.delegate = self; self.tableView.dataSource = self; [self.view addSubview:self.tableView]; [self.tableView release];}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return self.personArr.count;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *reuse = @"reuse"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse]; if (!cell) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuse] autorelease]; } cell.textLabel.text = self.personArr[indexPath.row][@"name"]; cell.detailTextLabel.text = self.personArr[indexPath.row][@"phone"]; NSString *picName = [NSString stringWithFormat:@"%ld.jpg", indexPath.row + 1]; cell.imageView.image = [UIImage imageNamed:picName]; return cell;}- (void)rightButtonAction:(UIBarButtonItem *)button{ SaveViewController *saveVC = [[SaveViewController alloc] init]; /// 5.设置代理人 saveVC.delegate = self; [self.navigationController pushViewController:saveVC animated:YES]; [saveVC release];}/// 6.实现协议方法- (void)addName:(NSString *)name Sex:(NSString *)sex Hobby:(NSString *)hobby Phone:(NSString *)phone Image:(NSString *)image{ NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:name, @"name", sex, @"sex", hobby, @"hobby", phone, @"phone", image, @"photo", nil]; if (![dic[@"name"] isEqualToString:@""]) { [self.personArr addObject:dic]; [self.personArr writeToFile:@"/Users/dllo/Desktop/StudentArr.plist" atomically:YES]; } NSLog(@"%@", self.personArr.lastObject[@"name"]); [self.tableView reloadData];}- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ self.currentIndexPath = indexPath; ChangeViewController *changeVC = [[ChangeViewController alloc] init]; [self.navigationController pushViewController:changeVC animated:YES]; changeVC.perDic = self.personArr[indexPath.row]; changeVC.photoStr = [NSString stringWithFormat:@"%ld.jpg",indexPath.row + 1]; changeVC.row = indexPath.row; changeVC.deleagte = self; [changeVC release];}- (void)changeName:(NSString *)name Sex:(NSString *)sex Hobby:(NSString *)hobby Phone:(NSString *)phone Image:(NSString *)image{ NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:name, @"name", sex, @"sex", hobby, @"hobby", phone, @"phone", image, @"photo", nil]; self.personArr[self.currentIndexPath.row] = dic;// [self.tableView reloadData]; NSArray *arrar = [NSArray arrayWithObject:self.currentIndexPath]; [self.tableView reloadRowsAtIndexPaths:arrar withRowAnimation:YES];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end
//// ChangeViewController.h// 通讯录//// Created by dllo on 15/8/7.// Copyright (c) 2015年 Clare. All rights reserved.//#import <UIKit/UIKit.h>// 1.声明一份协议@protocol ChangeViewController <NSObject>- (void)changeName:(NSString *)name Sex:(NSString *)sex Hobby:(NSString *)hobby Phone:(NSString *)phone Image:(NSString *)image;@end@interface ChangeViewController : UIViewController// 2.设置代理人属性@property(nonatomic, assign)id<ChangeViewController>deleagte;@property(nonatomic, retain)NSMutableDictionary *perDic;@property(nonatomic, copy)NSString *photoStr;@property(nonatomic, assign)NSInteger row;@end
//// ChangeViewController.m// 通讯录//// Created by dllo on 15/8/7.// Copyright (c) 2015年 Clare. All rights reserved.//#import "ChangeViewController.h"#define HEIGHT self.view.frame.size.height@interface ChangeViewController ()<UITextFieldDelegate>@property(nonatomic, retain)UIButton *changeButton;@property(nonatomic, retain)UITextField *nameTF;@property(nonatomic, retain)UITextField *sexTF;@property(nonatomic, retain)UITextField *hobbyTF;@property(nonatomic, retain)UITextField *phoneTF;@property(nonatomic, retain)UIImageView *image;@end@implementation ChangeViewController- (void)dealloc{ [_perDic release]; [_photoStr release]; [_changeButton release]; [_nameTF release]; [_sexTF release]; [_hobbyTF release]; [_phoneTF release]; [_image release]; [super dealloc];}- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; self.image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:self.photoStr]]; self.image.backgroundColor = [UIColor lightGrayColor]; self.image.frame = CGRectMake(100, 50, 200, 200); [self.view addSubview:self.image]; [self.image release]; UILabel *nameLable = [[UILabel alloc] initWithFrame:CGRectMake(100, 300, 50, 30)]; nameLable.text = @"姓 名:"; nameLable.textAlignment = NSTextAlignmentCenter; [self.view addSubview:nameLable]; [nameLable release]; self.nameTF = [[UITextField alloc] initWithFrame:CGRectMake(160, 300, 150, 30)]; self.nameTF.text = self.perDic[@"name"]; self.nameTF.backgroundColor = [UIColor lightGrayColor]; self.nameTF.layer.borderWidth = 1; self.nameTF.layer.cornerRadius = 10; self.nameTF.layer.masksToBounds = YES; [self.view addSubview:self.nameTF]; self.nameTF.clearsOnBeginEditing = YES; self.nameTF.delegate = self; [self.nameTF release]; UILabel *sexLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 350, 50, 30)]; sexLabel.text = @"性 别"; sexLabel.textAlignment = NSTextAlignmentCenter; [self.view addSubview:sexLabel]; [sexLabel release]; self.sexTF = [[UITextField alloc] initWithFrame:CGRectMake(160, 350, 150, 30)]; self.sexTF.text = self.perDic[@"sex"]; self.sexTF.backgroundColor = [UIColor lightGrayColor]; self.sexTF.layer.borderWidth = 1; self.sexTF.layer.cornerRadius = 10; self.sexTF.layer.masksToBounds = YES; [self.view addSubview:self.sexTF]; self.sexTF.clearsOnBeginEditing = YES; self.sexTF.delegate = self; [self.sexTF release]; UILabel *hobbyLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 400, 50, 30)]; hobbyLabel.text = @"爱好"; hobbyLabel.textAlignment = NSTextAlignmentCenter; [self.view addSubview:hobbyLabel]; [hobbyLabel release]; self.hobbyTF = [[UITextField alloc] initWithFrame:CGRectMake(160, 400, 150, 30)]; self.hobbyTF.text = self.perDic[@"hobby"]; self.hobbyTF.backgroundColor = [UIColor lightGrayColor]; self.hobbyTF.layer.borderWidth = 1; self.hobbyTF.layer.cornerRadius = 10; self.hobbyTF.layer.masksToBounds = YES; [self.view addSubview:self.hobbyTF]; self.hobbyTF.clearsOnBeginEditing = YES; self.hobbyTF.delegate = self; [self.hobbyTF release]; UILabel *phoneLable = [[UILabel alloc] initWithFrame:CGRectMake(100, 450, 50, 30)]; phoneLable.text = @"电 话:"; phoneLable.textAlignment = NSTextAlignmentCenter; [self.view addSubview:phoneLable]; [phoneLable release]; self.phoneTF = [[UITextField alloc] initWithFrame:CGRectMake(160, 450, 150, 30)]; self.phoneTF.text = self.perDic[@"phone"]; self.phoneTF.backgroundColor = [UIColor lightGrayColor]; self.phoneTF.layer.borderWidth = 1; self.phoneTF.layer.cornerRadius = 10; self.phoneTF.layer.masksToBounds = YES; [self.view addSubview:self.phoneTF]; self.phoneTF.clearsOnBeginEditing = YES; self.phoneTF.delegate = self; [self.phoneTF release]; self.changeButton = [UIButton buttonWithType:UIButtonTypeSystem]; [self.changeButton setTitle:@"编 辑" forState:UIControlStateNormal]; self.changeButton.frame = CGRectMake(200, 500, 50, 40); [self.view addSubview:self.changeButton]; [self.changeButton addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];}- (void)click:(UIButton *)but{ [self.deleagte changeName:self.nameTF.text Sex:self.sexTF.text Hobby:self.hobbyTF.text Phone:self.phoneTF.text Image:self.photoStr]; [self.navigationController popToRootViewControllerAnimated:YES];}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self.nameTF resignFirstResponder]; [self.sexTF resignFirstResponder]; [self.hobbyTF resignFirstResponder]; [self.phoneTF resignFirstResponder];}- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ if (textField.frame.origin.y > HEIGHT / 2) { CGFloat height = textField.frame.origin.y - HEIGHT / 2; self.view.center = CGPointMake(self.view.center.x, self.view.center.y -height); } return YES;}- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ if (textField.frame.origin.y > HEIGHT / 2) { CGFloat height = textField.frame.origin.y - HEIGHT / 2; self.view.center = CGPointMake(self.view.center.x, self.view.center.y + height); } return YES;}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end
//// SaveViewController.h// 通讯录//// Created by dllo on 15/8/7.// Copyright (c) 2015年 Clare. All rights reserved.//#import <UIKit/UIKit.h>/// 声明一份协议@protocol SaveViewController <NSObject>- (void)addName:(NSString *)name Sex:(NSString *)sex Hobby:(NSString *)hobby Phone:(NSString *)phone Image:(NSString *)image;@end@interface SaveViewController : UIViewController/// 2.设置代理人属性@property(nonatomic, assign)id<SaveViewController>delegate;@property(nonatomic, retain)NSMutableDictionary *dic;@property(nonatomic, retain)NSString *photo;@end
//// SaveViewController.m// 通讯录//// Created by dllo on 15/8/7.// Copyright (c) 2015年 Clare. All rights reserved.//#import "SaveViewController.h"#import "ChangeViewController.h"@interface SaveViewController ()<UITextFieldDelegate>@property(nonatomic, retain)UITextField *nameTF;@property(nonatomic, retain)UITextField *phoneTF;@property(nonatomic, retain)UITextField *sexTF;@property(nonatomic, retain)UITextField *hobbyTF;@property(nonatomic, retain)UIButton *button;@property(nonatomic, retain)UIImageView *image;@property(nonatomic, retain)UIButton *imageButton;@end@implementation SaveViewController- (void)dealloc{ [_dic release]; [_photo release]; [_nameTF release]; [_phoneTF release]; [_sexTF release]; [_hobbyTF release]; [_button release]; [_image release]; [_imageButton release]; [super dealloc];}- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; self.image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:self.photo]]; self.image.frame = CGRectMake(30, 50, 100, 100); self.image.backgroundColor = [UIColor lightGrayColor]; [self.view addSubview:self.image]; [self.image release]; UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(150, 50, 50, 30)]; name.text = @"姓 名:"; name.textAlignment = NSTextAlignmentCenter; [self.view addSubview:name]; [name release]; self.nameTF = [[UITextField alloc] initWithFrame:CGRectMake(210, 50, 150, 30)]; [self.view addSubview:self.nameTF]; [self.nameTF release]; self.nameTF.text = self.dic[@"name"]; self.nameTF.backgroundColor = [UIColor grayColor]; self.nameTF.layer.borderWidth = 1; self.nameTF.layer.cornerRadius = 10; self.nameTF.layer.masksToBounds = YES; self.nameTF.clearsOnBeginEditing = YES; self.nameTF.delegate = self; UILabel *sex = [[UILabel alloc] initWithFrame:CGRectMake(150, 100, 50, 30)]; sex.text = @"性 别:"; sex.textAlignment = NSTextAlignmentCenter; [self.view addSubview:sex]; [sex release]; self.sexTF = [[UITextField alloc] initWithFrame:CGRectMake(210, 100, 150, 30)]; [self.view addSubview:self.sexTF]; [self.sexTF release]; self.sexTF.text = self.dic[@"sex"]; self.sexTF.backgroundColor = [UIColor grayColor]; self.sexTF.layer.borderWidth = 1; self.sexTF.layer.cornerRadius = 10; self.sexTF.layer.masksToBounds = YES; self.sexTF.clearsOnBeginEditing = YES; self.sexTF.delegate = self; UILabel *hobby = [[UILabel alloc] initWithFrame:CGRectMake(150, 150, 50, 30)]; hobby.text = @"爱 好:"; hobby.textAlignment = NSTextAlignmentCenter; [self.view addSubview:hobby]; [hobby release]; self.hobbyTF = [[UITextField alloc] initWithFrame:CGRectMake(210, 150, 150, 30)]; [self.view addSubview:self.hobbyTF]; [self.hobbyTF release]; self.hobbyTF.text = self.dic[@"hobby"]; self.hobbyTF.backgroundColor = [UIColor grayColor]; self.hobbyTF.layer.borderWidth = 1; self.hobbyTF.layer.cornerRadius = 10; self.hobbyTF.layer.masksToBounds = YES; self.hobbyTF.clearsOnBeginEditing = YES; self.hobbyTF.delegate = self; UILabel *phone = [[UILabel alloc] initWithFrame:CGRectMake(150, 200, 50, 30)]; phone.text = @"电 话:"; phone.textAlignment = NSTextAlignmentCenter; [self.view addSubview:phone]; [phone release]; self.phoneTF = [[UITextField alloc] initWithFrame:CGRectMake(210, 200, 150, 30)]; [self.view addSubview:self.phoneTF]; self.phoneTF.text = self.dic[@"phone"]; self.phoneTF.backgroundColor = [UIColor grayColor]; self.phoneTF.layer.borderWidth = 1; self.phoneTF.layer.cornerRadius = 10; self.phoneTF.layer.masksToBounds = YES; self.phoneTF.clearsOnBeginEditing = YES; self.phoneTF.delegate = self; [self.phoneTF release]; self.button = [UIButton buttonWithType:UIButtonTypeSystem]; [self.button setTitle:@"确定" forState:UIControlStateNormal]; self.button.frame = CGRectMake(200, 250, 50, 30); [self.view addSubview:self.button]; [self.button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside]; }- (void)click:(UIButton *)but{ /// 3.设置触发方法 [self.delegate addName:self.nameTF.text Sex:self.sexTF.text Hobby:self.hobbyTF.text Phone:self.phoneTF.text Image:self.photo]; [self.navigationController popToRootViewControllerAnimated:YES];}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self.nameTF resignFirstResponder]; [self.sexTF resignFirstResponder]; [self.hobbyTF resignFirstResponder]; [self.phoneTF resignFirstResponder];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end
1 0
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 线段树分类总结
- 那些年我们错过的响应式编程
- 高效的 Linux 限流神器Trickle
- JAVA网络编程基础-1-快速网络编程入门-聊天服务器实现
- 平衡二叉树的C语言实现(创建、插入、查找、删除、旋转)【数据结构】
- 通讯录
- UIWebView与JS的深度交互
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理
- ACE_GUARD开头的锁
- 数据挖掘常用算法
- 浅析Java的Thread.join()方法
- ios开发者证书图解
- hdu 5361 In Touch 题目特点+优先队列的dijikstra 2015 Multi-University Training Contest 6
- centos7 安装openfire