天天看点

IOS 开发小作品 通讯录

MainViewController.m

#import "MainViewController.h"
#import "TableViewCell.h"
#import "SecondViewController.h"

@interface MainViewController ()<UITableViewDataSource,UITableViewDelegate,SecondViewControllerDelegate>


@property (nonatomic, retain) NSMutableArray *array;
@property (nonatomic, retain) NSMutableArray *arrayPhone;
@property (nonatomic, retain) NSArray *arrayImage;

@property (nonatomic, assign) NSInteger integer;

@end

@implementation MainViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        
        self.array = [NSMutableArray arrayWithObjects: nil];
        
        self.arrayPhone = [NSMutableArray arrayWithObjects:@"1315550000", @"13546855962", @"1334582647", @"1574658234", @"135458214", @"1359874126", @"13254896774", @"12257482369", @"18245876954", @"1574965842", @"16354285963", @"13956482654", @"13248569854", @"1345869753", @"1554869523", @"1567463214",@"14285963147", @"1225985448", @"548266996", @"4712548533", @"132548536", @"142585485", @"12563966547", @"456464646",nil];
        
        self.arrayImage = [NSMutableArray arrayWithObjects: nil];
        
        
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.title = @"通讯录";
    
    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
    
    
    self.tableView.separatorColor = [UIColor redColor];
    
    self.tableView.rowHeight = 100;
    
    self.tableView.dataSource = self;
    
    self.tableView.delegate = self;
    
    [self.view addSubview:self.tableView];
    
    [_tableView release];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.array count];
}
// 通讯录主界面从数组中得到数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *string = @"年华";
    
    TableViewCell *cell = [tableView dequeueReusableHeaderFooterViewWithIdentifier:string];
    
    if (cell == nil) {
        cell = [[[TableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:string]autorelease];
    }
    
    NSString *name = [self.array objectAtIndex:indexPath.row];
    
    cell.myLabel.text = name;
    
    cell.myLabel.tag = 10000;
    
    NSString *phoneNumber = [self.arrayPhone objectAtIndex:indexPath.row];
    
    cell.myPhoneLabel.tag = 10001;
    
    cell.myPhoneLabel.text = phoneNumber;
    
    NSString *imageView = [self.arrayImage objectAtIndex:indexPath.row];
    
    cell.myImageView.image = [UIImage imageNamed:imageView];
    
    return cell;
}
// 将通讯录界面的数据传到修改界面以便修改
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    SecondViewController *secondVC = [[SecondViewController alloc]init];
    
    NSString *name = [self.array objectAtIndex:indexPath.row];
    
    self.integer = indexPath.row;
    
    secondVC.reveiveName = name;
    
    NSString *phone = [self.arrayPhone objectAtIndex:indexPath.row];
    
    secondVC.reveivePhone = phone;
    
    NSString *image = [self.arrayImage objectAtIndex:indexPath.row];
    
    secondVC.reveiveImage = image;
    
    
    secondVC.delegate = self;
    
    
    [self.navigationController pushViewController:secondVC animated:YES];
    
    [secondVC release];
}

// 接受从修改界面传过来的数据
- (void)passValue:(NSString *)name phone:(NSString *)phone
{
    
    [self.array replaceObjectAtIndex:self.integer withObject:name];
    
    [self.arrayPhone replaceObjectAtIndex:self.integer withObject:phone];
    
    [self.tableView reloadData];
}
           

SecondViewController.m

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
// 布局修改界面
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
    imageView.image = [UIImage imageNamed:@"back.jpg"];
    
    [self.view addSubview:imageView];
    
    [imageView release];
    
    self.imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 100, 140, 250)];
    
    self.imageView.image = [UIImage imageNamed:self.reveiveImage];
    
    self.imageView.backgroundColor = [UIColor blueColor];
    
    [self.view addSubview:self.imageView];
    
    
    UILabel *name = [[UILabel alloc]initWithFrame:CGRectMake(140, 100, 90, 30)];
    
    name.text = @"姓名:";
    
    [self.view addSubview:name];
    
    
    self.textFieldName = [[UITextField alloc]initWithFrame:CGRectMake(200, 100, 90, 40)];
    
    self.textFieldName.text = self.reveiveName;
    
    self.textFieldName.tag = 1001;
    
    self.textFieldName.backgroundColor = [UIColor grayColor];
    
    [self.view addSubview:self.textFieldName];
    
    UILabel *phone = [[UILabel alloc]initWithFrame:CGRectMake(140, 160, 70, 30)];
    
    phone.text = @"手机号:";
    
    [self.view addSubview:phone];
    
    self.textFieldPhone = [[UITextField alloc]initWithFrame:CGRectMake(200, 160, 110, 40)];
    
    self.textFieldPhone.tag = 1002;
    
    self.textFieldPhone.text = self.reveivePhone;
    
    self.textFieldPhone.backgroundColor = [UIColor grayColor];
    
    [self.view addSubview:self.textFieldPhone];
    
    
    UIButton *submit = [UIButton buttonWithType:UIButtonTypeSystem];
    
    submit.frame = CGRectMake(170, 220, 40, 40);
    
    [submit setTitle:@"提交" forState:UIControlStateNormal];
    
    [submit addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:submit];
    
    UIButton *cancel = [UIButton buttonWithType:UIButtonTypeSystem];
    
    cancel.frame = CGRectMake(220, 220, 40, 40);
    
    [cancel setTitle:@"取消" forState:UIControlStateNormal];
    
    [cancel addTarget:self action:@selector(buttonCancel:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:cancel];
    
    [_imageView release];
    
    [_textFieldName release];
    
    [_textFieldPhone release];
    
}
// 提交将数据保存返回到上一页面
- (void)buttonClicked:(UIButton *)button
{
    [self.delegate passValue:_textFieldName.text phone:_textFieldPhone.text ];
    [self.navigationController popToRootViewControllerAnimated:YES];
    
    
}

// 取消返回上一页
- (void)buttonCancel:(UIButton *)button
{
    [self.navigationController popToRootViewControllerAnimated:YES];
}

// 关掉键盘
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    
    for (int i = 1; i < 3; i++) {
        UITextField *text = (UITextField *)[self.view viewWithTag:1000 + i];
        [text resignFirstResponder];
    }
}
           

TableViewCell.m

#import "TableViewCell.h"

@implementation TableViewCell
// 创建修改画面
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
        
        self.myImageView = [[UIImageView alloc]init];
        
        [self.contentView addSubview:self.myImageView];
        
        self.myLabel = [[UILabel alloc]init];
        
        [self.contentView addSubview:self.myLabel];
        
        self.myPhoneLabel = [[UILabel alloc]init];
        
        [self.contentView addSubview:self.myPhoneLabel];
        
        [_myImageView release];
        
        [_myLabel release];
        
        [_myPhoneLabel release];
        
    }
    return self;
}
// 布局通讯录主画面
- (void)layoutSubviews
{
    [super layoutSubviews];
    
    _myImageView.frame = CGRectMake(0, 0, self.contentView.frame.size.width / 2, self.contentView.frame.size.height);
    
    _myLabel.frame = CGRectMake(self.contentView.frame.size.width / 5 * 3, 0, self.contentView.frame.size.width / 2, self.contentView.frame.size.height / 2);
    
    _myPhoneLabel.frame = CGRectMake(self.contentView.frame.size.width / 5 * 3, self.contentView.frame.size.height / 2, self.contentView.frame.size.width / 2, self.contentView.frame.size.height / 2);
}