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

本文介绍了如何在Objective-C中实现iOS应用的通讯录编辑联系人功能,包括从联系人列表传递模型到编辑控制器、设置初始文本框内容、处理编辑和保存操作,并探讨了使用代理和视图生命周期方法(如viewWillAppear和viewDidAppear)进行数据传递的不同策略,以及它们的效率差异。
摘要由CSDN通过智能技术生成

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

通知

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]

去取它的点击位置,

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

通知

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

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

二、传过去了

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值