2016-1-6第一个完整APP 私人通讯录的实现 4:编辑联系人
一:建立编辑联系人的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:];
// 局部刷新
[self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:YES];
// 隐藏编辑联系人控制器
[self.navigationController popViewControllerAnimated:YES];
}
三:实际效果如下:
2016-1-6第一个完整APP 私人通讯录的实现 4:编辑联系人的更多相关文章
- 2016-1-5第一个完整APP 私人通讯录的实现 1:登录界面及跳转的简单实现2
---恢复内容开始--- 实际效果如上 一:Segue的学习 1.什么是Segue: Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue) ...
- 2016-1-7第一个完整APP 私人通讯录的实现 6:在联系人界面增加删除联系人的功能
一:在viewDidLoad方法中代码添加一个UIBarButtonItem,并将其的类型设置成垃圾桶,代码如下: - (void)viewDidLoad { [super viewDidLoad]; ...
- 2016-1-7第一个完整APP 私人通讯录的实现 5:保存数据
一:登陆界面 1):用户点击登陆按钮并成功登陆后,根据此时的开关情况选择是否保存数据,代码如下: "]) { [self performSegueWithIdentifier:@" ...
- 2016-1-6第一个完整APP 私人通讯录的实现 3:添加联系人
一:创建模型对象:contact用于存放数据,也便于读取加载 #import <Foundation/Foundation.h> @interface contact : NSObject ...
- 2016-1-6第一个完整APP 私人通讯录的实现 2:增加提示用户的提示框,监听文本框
一:在登录时弹出提示用户的提示框: 1.使用第三方框架. 2.在登陆按钮点击事件中增加如下代码: - (IBAction)loginBtnClicked { NSString *acount = se ...
- iOS完整App资源收集
前言 iOS开发学习者都希望得到实战训练,但是很多资料都是只有一小部分代码,并不能形成完成的App,笔者在此处收集了很多开源的完整的App,都有源代码哦! 本篇文章持续更新中,请持续关注.本篇所收集的 ...
- MUI框架开发HTML5手机APP(一)--搭建第一个手机APP
前 言 JRedu 随着HTML5的不断发展,移动开发成为主流趋势!越来越多的公司开始选择使用HTML5开发手机APP,而随着手机硬件设备配置的不断提升,各种开发框架的不断优化,也使着H5开发的 ...
- MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)
出处:http://www.cnblogs.com/jerehedu/p/7832808.html 前 言 JRedu 随着HTML5的不断发展,移动开发成为主流趋势!越来越多的公司开始选择使用H ...
- 浅谈MAIC 2016第二届移动应用(APP)创新大会
MAIC 2016第二届移动应用(APP)创新大会将于2016年12月在上海举办!MAIC一届比一届办的有质量,规模越大.今年也如约而至,预计今年MAIC规模逾2000人.大会以专业会议,创新应用展览 ...
随机推荐
- 【bzoj1018】堵塞的交通
[bzoj1018]堵塞的交通 题意 一个\(2*n\)的格子,相邻格子之间有一条道路.初始时道路是不通的. \(C\)个操作,每个操作为三种中的一种:(1)某条道路连起来:(2)某条道路断开:(3) ...
- HTML5自定义属性对象Dataset简介
一.html5 自定义属性介绍 我之前翻译的“你必须知道的28个HTML5特征.窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设 ...
- 1.2 认识ASP.NET MVC项目结构
1.开发环境 操作系统:xp.vista.windows 7.windows 8.windows server 2003|2008|2008R2|2012: 集成开发环境IDE: Vsiual Stu ...
- JavaScript表单编程
一. form的方式 1.直接定位方式 document.getElementById(id);</br> document.getElementsTagName(tagName);< ...
- python 练习 16
#!/usr/bin/python # -*- coding: UTF-8 -*- import time myD = {1: 'a', 2: 'b'} for key, value in dict. ...
- robotframework笔记21
创建输出 当执行测试,创建多个输出文件和所有的 都以某种方式相关测试结果. 本节讨论什么 输出创建.如何配置创建,以及如何 调整他们的内容. 不同的输出文件 本节解释了不同可以创建和输出文件 如何配置 ...
- EasyDropDown – 很棒的下拉菜单 含精美主题
EasyDropDown 是一个 jQuery 插件,你可以毫不费力地将简陋的 Select 元素设置为可定制风格的下拉菜单,用于表单或者一般的导航.和著名的下拉插件 Chosen 很像,但是具有自己 ...
- Qt之QSS(QDarkStyleSheet)
简述 关于样式,前面介绍了很多内容,下面分享一个深色样式表,很值得借鉴! 简述 效果 QSS 更多参考 效果 QSS /* * The MIT License (MIT) * * Copyright ...
- ubuntu14.04LS中安装SSH
我只能说: 蛋疼了 因为 1.曾经12.04和13.10的源已经不能使用了(PS毕竟支持的时间到了) 2网上有好多说是更新源的 , 打开etc/...文件 ,然后粘贴一下他们给的源的地址 或许有些是可 ...
- (转)codeblock(常用快键)
一款开源的C/C++ IDE(集成开发环境),基于wxWidgets GUI体系,跨平台支持. 编辑器 快捷键 功能 Ctrl+Z 恢复上一次操作 Ctrl+Shift+Z 重复上一次操作 F11 切 ...