码迷,mamicode.com
首页 > 移动开发 > 详细

2016-1-5第一个完整APP 私人通讯录的实现 4:编辑联系人

时间:2016-01-06 21:35:40      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

一:建立编辑联系人的controller,并使其拥有模型contact,且有协议。代码如下

#import <UIKit/UIKit.h>
#import "contact.h"
@class EditContactViewController ;
@protocol EditContactViewControllerDelegate<NSObject>

- (void) editContactViewController:(EditContactViewController *)editContactViewController finishedSaveContact:(contact *)con;

@end


@interface EditContactViewController : UIViewController
@property (strong, nonatomic) contact *contact;
@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *telField;
@property (weak, nonatomic) id <EditContactViewControllerDelegate> delegate;

@end

.m文件中代码如下:

#import "EditContactViewController.h"

@interface EditContactViewController ()
@property (weak, nonatomic) IBOutlet UIButton *saveBtn;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *editBtn;

@end

@implementation EditContactViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.nameField.text = self.contact.name;
    self.telField.text = self.contact.tel;
}
- (IBAction)saveBtnClick:(id)sender {
    if ([self.delegate respondsToSelector:@selector(editContactViewController:finishedSaveContact:)])
    {
//        NSLog(@"%s",__func__);
        self.contact.name = self.nameField.text;
        self.contact.tel = self.telField.text;
        [self.delegate editContactViewController:self finishedSaveContact:self.contact];
    }
}

- (IBAction)editBtnClick:(id)sender {
    self.nameField.enabled = !self.nameField.enabled;
    self.telField.enabled = !self.telField.enabled;
    self.saveBtn.hidden = !self.saveBtn.hidden;
    if (self.nameField.enabled) {
        self.editBtn.title = @"取消";
    }else {
        self.editBtn.title  = @"编辑";
    }
}

@end

二:

(1)在contactsController中将被点击的cell中的数据传给编辑人控制器,代码如下:

//    判断目标控制器类型
    if ([destVc isKindOfClass:[EditContactViewController class]]) {
        EditContactViewController *edit = destVc;
        NSInteger indexPathOfRow =   self.tableView.indexPathForSelectedRow.row;
//        获取要传递给目标控制器的contact
        contact *con = self.contacts[indexPathOfRow];
//        设置目标控制器的contact属性
        edit.contact = con;
//        设置自己为目标控制器的代理
        edit.delegate = self;
    }

(2)在contactsController中实现代理方法,并刷新数据,代码如下:

- (void)editContactViewController:(EditContactViewController *)editContactViewController finishedSaveContact:(contact *)con
{
//    获取联系人的数据 并加载到自己的联系人里
//    在自己的数组中找到当时传入的contact,并获取哪一行
    NSInteger row = [self.contacts indexOfObject:con];
//   找到要刷新的那一个cell
    NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0];
//    局部刷新
    [self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:YES];
//    隐藏编辑联系人控制器
    [self.navigationController popViewControllerAnimated:YES];
}

三:实际效果如下:

技术分享

2016-1-5第一个完整APP 私人通讯录的实现 4:编辑联系人

标签:

原文地址:http://www.cnblogs.com/BJTUzhengli/p/5106791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!