通讯录
通讯录可实现增删改
//把导航控制器设置为给视图
#import "AppDelegate.h"
#import "ViewController.h"
@interfaceAppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
[self.window makeKeyAndVisible];
UINavigationController *nvc = [[UINavigationControlleralloc]initWithRootViewController:[[ViewControlleralloc]init]];
self.window.rootViewController = nvc;
returnYES;
}
#import <UIKit/UIKit.h>
#import "AddViewController.h"
#import "DetailViewController.h"
@interface ViewController : UIViewController<Adddelegate,Editdelegate>
@end
#import "ViewController.h"
#import "Constant.h"
#import "MyTableViewCell.h"
#import "AddViewController.h"
@interfaceViewController ()<UITableViewDataSource,UITableViewDelegate>
{
UITableView *tabel;
NSMutableArray *array; //用于存放数据对象
NSInteger index;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.title = @"通讯录";
tabel = [[UITableViewalloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];//tabel的位置与大小
tabel.delegate = self;
tabel.dataSource = self;
tabel.rowHeight = 80;//tabel的行高
[self.view addSubview:tabel];
Constant *con = [[Constant alloc]init];
array = [con initdata];
UIBarButtonItem *item = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAddtarget:selfaction:@selector(addinfo)];
self.navigationItem.rightBarButtonItem = item;
}
-(void) addinfo
{
AddViewController *addvc = [[AddViewControlleralloc]init];
addvc.delegate = self;
[self.navigationControllerpushViewController:addvc animated:YES];
}
-(void) addcontact:(Constant *)info
{
NSLog(@"%@",info.name) ;
[array addObject:info]; //将新添加的对象放入数组里
[tabelreloadData];
}
-(void) editinfo:(Constant *)info5
{
[arrayreplaceObjectAtIndex:indexwithObject:info5];//将改过的对象替换原来的
[tabelreloadData];//数据的更新
}
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return array.count;
}
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *inde = @"cell";
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:inde];
if (cell == nil) {
cell = [[MyTableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:inde];
}
Constant *info =array[indexPath.row];
cell.imageview1.image = [UIImage imageNamed:info.iamge];
cell.namelabel.text = info.name;
cell.phontlabel.text = info.phone;
return cell;
}
-(BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
returnYES;
}
//实现tabel上的内容可删除
-(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
[array removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath]withRowAnimation:0];//移除被选中的行
}
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController *datavc = [[DetailViewControlleralloc]init];
[self.navigationControllerpushViewController:datavc animated:YES];
datavc.delegate = self;//设置委托
datavc.info = array[indexPath.row];//获得数据对象,进行向下一级传值
index = indexPath.row;
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
#import <Foundation/Foundation.h>
@interface Constant : NSObject
@property (nonatomic,copy) NSString *iamge;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *phone;
-(NSMutableArray *) initdata;
@end
#import "Constant.h"
@implementation Constant
-(NSMutableArray *) initdata
{
Constant *info1 = [[Constant alloc]init];
info1.iamge = @"1.jpg";
info1.name = @"申明康";
info1.phone = @"13528695827";
Constant *info2 = [[Constant alloc]init];
info2.iamge = @"15.jpg";
info2.name = @"赵永杰";
info2.phone = @"18528645027";
Constant *info3 = [[Constant alloc]init];
info3.iamge = @"3.jpg";
info3.name = @"刘贵曾";
info3.phone = @"13027455776";
Constant *info4 = [[Constant alloc]init];
info4.iamge = @"4.jpg";
info4.name = @"方阿端";
info4.phone = @"13589449369";
NSMutableArray *arr = [NSMutableArray arrayWithObjects:info1,info2,info3,info4, nil];
return arr;
}
@end
#import <UIKit/UIKit.h>
@interface MyTableViewCell : UITableViewCell
@property (nonatomic,strong) UIImageView *imageview1;
@property (nonatomic,strong) UILabel *namelabel;
@property (nonatomic,strong) UILabel *phontlabel;
@end
#import "MyTableViewCell.h"
@implementation MyTableViewCell
-(instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
_imageview1 = [[UIImageViewalloc]initWithFrame:CGRectMake(5, 5, 60, 60)];
[self addSubview:_imageview1];
_namelabel = [[UILabelalloc]initWithFrame:CGRectMake(80, 5, 200, 20)];
[self addSubview:_namelabel];
_phontlabel = [[UILabelalloc]initWithFrame:CGRectMake(80, 45, 200, 20)];
[self addSubview:_phontlabel];
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
#import <UIKit/UIKit.h>
#import "Constant.h"
@protocol Adddelegate <NSObject>
-(void) addcontact:(Constant *) info;
@end
@interface AddViewController : UIViewController
@property (nonatomic,weak) id<Adddelegate> delegate;
@end
#import "AddViewController.h"
#import "ViewController.h"
#import "Constant.h"
@interfaceAddViewController ()
{
UITextField *namefile;
UITextField *phonefile;
}
@end
@implementation AddViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.title = @"新增";
self.view.backgroundColor = [UIColorwhiteColor];
namefile = [[UITextFieldalloc]initWithFrame:CGRectMake(50, 100, 200, 50)];
namefile.backgroundColor = [UIColorgrayColor];
[self.view addSubview:namefile];
phonefile = [[UITextFieldalloc]initWithFrame:CGRectMake(50, 200, 200, 50)];
phonefile.backgroundColor = [UIColorgrayColor];
[self.view addSubview: phonefile];
UIBarButtonItem *item = [[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDonetarget:selfaction:@selector(done)];
self.navigationItem.rightBarButtonItem = item;
}
-(void) done
{
Constant *con = [[Constant alloc]init];
con.iamge = @"1.jpg";
con.name = namefile.text;
con.phone = phonefile.text;
[_delegate addcontact:con];
[self.navigationControllerpopViewControllerAnimated:YES];
}
#import <UIKit/UIKit.h>
#import "Constant.h"
@protocol Editdelegate <NSObject>
-(void) editinfo:(Constant *) info5;
@end
@interface DetailViewController : UIViewController
@property (nonatomic,weak) id<Editdelegate> delegate;//接收委托的对象,weak可以避免循环引用,还可以用assign
@property (nonatomic,strong) Constant *info;//用于接收上级传过来的数据
@end
#import "DetailViewController.h"
@interfaceDetailViewController ()
{
UITextField *namefile;
UITextField *phonefile;
UIButton *rightBtn;
BOOL isEdit;//判断是否在编辑状态
}
@end
@implementation DetailViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.title = @"详情";
self.view.backgroundColor = [UIColorwhiteColor];
/****************************UITextField的创建**************************/
namefile = [[UITextFieldalloc] initWithFrame:CGRectMake(40, 80, 200, 30)];
namefile.borderStyle = UITextBorderStyleRoundedRect;
namefile.backgroundColor = [UIColorgrayColor];
namefile.text = _info.name;
namefile.userInteractionEnabled = NO;
[self.view addSubview:namefile];
phonefile = [[UITextFieldalloc] initWithFrame:CGRectMake(40, 130, 200, 30)];
phonefile.borderStyle = UITextBorderStyleRoundedRect;
phonefile.backgroundColor = [UIColorgrayColor];
phonefile.userInteractionEnabled = NO;//是否允许与用户交互
phonefile.text = _info.phone;
[self.view addSubview:phonefile];
/****************************UITextField的创建**************************/
/***************************自定义导航栏按钮*****************************/
rightBtn = [UIButtonbuttonWithType:UIButtonTypeCustom];
rightBtn.frame = CGRectMake(0, 0, 80, 40);
rightBtn.backgroundColor = [UIColorgrayColor];
[rightBtnsetTitle:@"编辑"forState:UIControlStateNormal];
[rightBtnaddTarget:selfaction:@selector(edit) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *item =[[UIBarButtonItemalloc]initWithCustomView:rightBtn];
self.navigationItem.rightBarButtonItem = item;
/***************************自定义导航栏按钮*****************************/
}
-(void) edit
{
if (!isEdit) {
[rightBtnsetTitle:@"完成"forState:UIControlStateNormal];
namefile.userInteractionEnabled = YES;
phonefile.userInteractionEnabled = YES;
isEdit = YES;
}
else{
[rightBtnsetTitle:@"编辑"forState:UIControlStateNormal];
namefile.userInteractionEnabled = NO;
phonefile.userInteractionEnabled = NO;
isEdit = NO;
Constant *info = [[Constant alloc]init];
info.name = namefile.text;
info.phone = phonefile.text;
info.iamge = @"2.jpg";
[_delegate editinfo:info];
[self.navigationControllerpopViewControllerAnimated:YES];
}
}