【通讯录案例-添加联系人功能 Objective-C语言】
发布时间:2024年01月19日
一、添加联系人的功能,继续来做这个啊
1.在这个“添加联系人”界面儿,

姓名:来一个“111”,
电话:来一个“2222”,
当我点击“添加”按钮以后,
我应该把B里边儿的内容传给A,
所以,这个里边儿,我的代理方法,这个协议,应该写在哪儿,
写在“添加联系人”的控制器,
还是写在这个”1的联系人“控制器里边儿,

写在“添加联系人”的控制器,对吧,
因为从B控制器传数据到A控制器,我们拿不到那个prepareForSegue:方法,所以怎么办,用代理吧,
然后,接下来,我们就来写代码儿,

把这个代码儿,备份一下啊,
选中这个“08-通讯录-添加联系人界面“,

command + C、command + V、

把这个“08-通讯录-搭建添加联系人界面副本“,改成”09-通讯录-添加联系人功能“,

后面加一个(逆传),

”09-通讯录-添加联系人功能“,改成”09-通讯录-添加联系人功能(逆传)“,
好,然后呢,这个项目,
2.接下来,我们来做这个核心功能,“逆传”,

好,然后呢,接下来啊,我们说,我们现在呢,要把这个“添加联系人”的这个数据,传给“联系人列表”,
好,也就是说,我现在,应该在添加联系人的这个控制器里边儿,去写协议,
好,然后呢,在这个里边儿啊,AddViewController.h

2.我们先来写一个协议,
我在这个#import 下面儿,写一个@pr

@pro

@protocol - Objective-C Protocol Definition,
选择下面这个,按回车,

选择下面这个类名儿,AddViewController,

选中这个类名儿,AddViewController,command + C、
粘贴到上面儿这个协议名儿,protocol name,这里,

后面加一个Delegate,
等于协议名儿,就是AddViewControllerDelegate,

然后,下边儿这个methods,
写一个@optional,

@optional,可选的方法啊,

- (void)
首先呢,是没有返回值的,第一个参数,是它自己,
选中下面这个AddViewController,command + C、

到上面儿这个方法名儿这里,command + V、粘贴过来、

把第一个字母改成小写,addViewController,方法名儿第一个字母要小写,

好,然后呢,再来一个冒号,一对小括号,

在小括号里,再来写一个(AddViewController *)

后面再写一个AddViewController,

- (void)addViewController:(AddViewController *)AddViewController,
第一个字母,改成小写,

- (void)addViewController:(AddViewController *)addViewController
然后呢,with一个

我们这里边儿,要传一个“姓名”、和一个“电话“、
所以呢,这个里边儿,我们withName:(NSString *)name

然后,andNumber:传什么,就在后面儿直接写就行了,

andNumber:(NSString *)number

那么这个方法,就搞定了,
这个有个报错儿,没有引入头文件,对吧,

@class AddViewController;

引入一下头文件,@class AddViewController;
因为我们这个方法里面的参数,是要用到AddViewController这个类的啊,在“点儿”h里面,还没有引入这个类,所以我们导入一下头文件,
2)好,然后呢,再来一个代理的属性,delegate,

来一个XWeak,


输入两个参数,@property(nonatomic,weak)type *name;
1)type:来一个id< AddViewControllerDelegate >

2)name:来一个delegate,

3)好,然后呢,是不是delegate属性就有了,有了以后呢,我要考虑一下,在哪儿去用啊,
来到AddViewController“点儿”m文件里边儿,

在哪儿去执行,
好,当我们点击“添加”按钮的时候,addButton,

当我点击“添加”按钮的时候,应该把这个值传过去,
所以呢,我们一定是要监听这个“添加”按钮的点击事件,
// 监听添加按钮的点击事件

监听一下添加按钮的点击事件

[self.addButton addTarget:self action:@selector(addClick) forControlEvents:UIControlEventTuochUpInside];
4.然后呢,在这个里边儿,去写一个addClick的方法,

- (void)addClick{
}
写个注释,// 添加按钮的点击事件

然后呢,当我们点击“添加”的时候呢,首先
1)首先:我们要pop,没错儿吧,
[self.navigationController popViewControllerAnimated:YES];

好,这个pop应该有了,写个注释,// 返回上一个控制器(联系人列表),

2)然后呢,这个pop有了,有了以后呢,我们要在这个里边儿,执行代理方法,
首先呢,要去判断,代理方法是不是能够相应,
写个注释,// 判断代理方法是不是能够相应
// 如果可以响应,那么执行代理方法
写一个if

然后,来一个这个,self.delegate

self.delegate respondsToSelector:(SEL)

self.delegate respondsToSelector:@selector(addViewController:withName:withNumber:)

好,判断一下,如果代理方法可以响应的话,
那我就应该去,// 如果可以响应 那么执行代理方法

执行代理方法,
文章来源:https://blog.csdn.net/madoca/article/details/135649212
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!