一、我们接着来说这个“通讯录”案例啊,编辑联系人的功能 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] 去取它的点击位置, 然后,该怎么着去做,怎么着去做, 好,这是一个方法啊,大家下来看一下, 好,这是关于一个“顺传”,应该就传过去了, 二、传过去了以后,在“编辑联系人”的这个“