【通讯录案例-编辑联系人功能 Objective-C语言】

一、我们接着来说这个“通讯录”案例啊,编辑联系人的功能

1.首先呢,我们第一,应该把“联系人列表”里面,Cell的模型的内容,传到“编辑联系人”的控制器里边儿来,

并且让它展示在文本框里,

当我点击这个“11”、“222”、这个Cell的时候,

它会把这个“11”、“222”、是不是会显示在这两个文本框里边儿啊,

所以这个里边儿,是不是有一个“顺传”,

所以呢,我要传的是什么,是一个“模型”吧,

所以呢,我应该在我的B控制器里边儿,“编辑联系人”的这个控制器的“点儿”h文件里边儿,

要传什么,你要传一个“联系人”,Contact,

导入一下头文件,

#import “Contact.h”

然后,声明一个Contact类型的属性,

@property(nonatomic,strong) Contact *name;

这个name叫什么,

name:来一个contact,

在传一个“联系人”过来的时候,我就用这个属性去接,就可以了,

2.好,那么,首先,当我点击这个Cell的时候,

我要去赋值,

赋值是怎么着,就是两步,

1)在B控制器的“点儿”h里边儿,声明一个类型,

2)直接给B控制器对象的contact属性,去赋值,就可以了

2.好,那在这个里边儿,我们这个“联系人界面儿”,怎么样去拿到B控制器,

在“联系人界面儿”,怎么着去拿到“编辑联系人”控制器,

是不是还是在prepareForSegue:方法里边,

我们这里边儿,不是alloc、init、出来的,

它实际上,跟设置代理这一块儿,是一样的,

你设置代理了,需要通过它去拿到目标控制器,

需要通过:UIViewController *vc = segue.destinationViewController;

去拿到目标控制器,

那么我在这个里边儿,我在else的时候,

1)首先:我要跳到“编辑联系人”界面儿,

所以呢,我应该在这个else里边儿,去拿到我们的B控制器对象,

直接给它赋值,就可以了,

所以呢,在这个里边儿啊,我写个注释,

// 顺传赋值

2)好,首先呢,一样的,上面儿的代码,都是一样的,

vc,啊,这个时候,vc的真实类型,应该是EditViewController,

所以我们也需要去“强转”一下儿,要不然你“点儿”不出来那个属性,

导入一下头文件,#import “EditViewController.h“

然后,“强转”一下,EditViewController *edit =

EditViewController *edit = [ ];

额,小括号,

EditViewController *edit = (EditViewController *)vc;

3)好,然后呢,把这个EditViewController里面有一个“联系人”属性,

edit.contact =

好,那么,这个“联系人”,应该等于啥,

应该等于我们点击这个Cell上的一个模型,对吧,

那我们之前啊,点击这个Cell,的点击事件,

好,我们会有一个indexPath,

然后,我们通过数组里边儿,去取这个indexPath的row,

应该就能取出来,里边儿这个模型,

但是,这个里边儿,好像,

这个里边儿,好像没有给我indexPath,吧,

咋办,sender?

sender,然后呢?

你的意思是说,点击的时候,把这个sender,给它弄过来,是吗?

sender,这个时候,我们现在,不是用的“手动型”啊,

所以,这个sender,还没法儿传吧,

不是“手动型”吧,不是我们手动说,执行的时候,让你执行某一根儿segue,

有一个sender的参数,不是这么做的,

实际上,这个样子啊,

我们现在啊,点击某一个Cell,我们呢,要先获取到这个Cell的位置,

我们现在啊,点击某一个Cell,我们呢,要先获取到这个Cell的位置,

然后,再去,去根据它的位置,去取它的模型,就可以了,

1)首先:第一步,获取点击Cell的位置(indexPath)

怎么来获取点击Cell的位置,self.tableView 有一个叫做indexPathForSelectedRow:的方法,

[self.tableView indexPathForSelectedRow];

实际上,这样儿,就可以拿到indexPath,

就跟我们点击,didSelect,那个indexPath,实际上就相当于是一样的东西了,

有了indexPath,那接下来,该怎么着去做,都是一样的,

好,那我拿NSIndexPath类型的变量,接一下,

NSIndexPath *path = [self.tableView indexPathForSelectedRow];

首先,在这个里边儿,我们获取到,点击Cell的位置,

2)然后,接下来,去获取模型,

// 获取模型

获取到的是Contact *,类型的值,

Contact *con = self.contacts[path.row];

然后呢,把这个模型(con),再传给B控制器的contact属性,再去赋值,就可以了,

// 赋值

edit.contact = con;

就是这么样儿一个过程,就是多了这么一句话,

这句话,之前有说过吗,

应该提到过,当然这个也没关系啊,大家知道一下,

在这个里边儿,我们以后啊,包括做其他的东西,也是,

当我们点击TableView,想拿到它的位置,通过这个位置去拿模型的时候,

那么首先,你可以通过这一个方法,

[self.tableView indexPathForSelectedRow];

去拿到点击的位置,

如果系统,它并没有给你回调过来一个indexPath的话,

那你可以通过这个方法,[self.tableView indexPathForSelectedRow]

去取它的点击位置,

然后,该怎么着去做,怎么着去做,

好,这是一个方法啊,大家下来看一下,

好,这是关于一个“顺传”,应该就传过去了,

二、传过去了以后,在“编辑

你可能感兴趣的:(Objective-C,objective-c,ios,开发语言)