pro-- 通讯录2-Add


iOS开发UI篇—实现一个私人通讯录小应用(二):
http://www.cnblogs.com/wendingding/p/3777087.html





一、实现功能说明

(1)点击注销按钮,弹出一个对话框,点击确定后移除当前栈顶的控制器,返回开始界面,点击取消,不做任何操作。

注意:注销按钮的单击事件已经进行了连线。实现-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex需要遵守UIActionSheetDelegate协议。

(2)当两个文本框的状态发生改变时,通知添加按钮变为可用状态。

知识点:通知(注册监听)

        (3)小细节:从ContactsList -- 》Add页面的时候,我们的焦点应该直接放在UITextFiled中,用户体验较好。但需要注意是ADDView先出来,键盘再出来   

所以代码应该放在

57 - (void)viewDidAppear:(BOOL)animated
58 {
59     // 3.主动召唤出键盘
60     [self.nameFeild becomeFirstResponder];
61     //    [self.nameField resignFirstResponder];
62 }

(4)数据的逆传(使用代理) 

通过上述我们可以知道代理就是对象A监听对象B,A一般是控制器,B一般是控件(当然也可能是控制器)。
实现代理的三个步骤:
1、设置代理:设置监听对象A为代理B.delegate = self(A);
2、遵守协议:遵守的是被监听对象B的协议,所以协议是定义在对象B中的。在对象A中引入代理
3、实现协议方法:在对象A中实现协议中的方法
自定义代理:
ContactViewController作为AddViewController的代理

1、首先在AddViewController中定义一个协议,协议中定义一个需要代理对象需要实现的方法(这里是C-C的,为了传递数据,所以方法中应该有参数用来传递数据),

同时还应该在AddViewController中定义一个属性delegate

2、在ContactViewController中的btnClick的方法中(实际是从Contact--Add 的方法中),在页面跳转之前设置代理,addVc.delegate = self;(别忘了遵守协议!)

3、在AddViewController中addBtn的方法中,在出栈的同时通知代理调用代理方法

 //如果代理方法存在就通知代理调用该方法,传递数据
79     if ([self.delegate respondsToSelector:@selector(addViewControllerDidAddBtn:contatc:)]) {
80         NSLog(@"sadafaf");
81         [self.delegate addViewControllerDidAddBtn:self contatc:info];
82     }


比如AddContacts
 //2.数据逆传(把当前控制器view的数据传递到上一个控制器的view中)
77     //使用代理,自定义一个代理,并使用代理传递数据
78     //如果代理方法存在就通知代理调用该方法,传递数据
79     if ([self.delegate respondsToSelector:@selector(addViewControllerDidAddBtn:contatc:)]) {
80         NSLog(@"sadafaf");
81         [self.delegate addViewControllerDidAddBtn:self contatc:info];
82     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值