[转]ios 数据的传递
情景1: A-->B 需要把数据传递到B里
代码:
- // 跳转 -- 执行login2contacts这个segue
- [self performSegueWithIdentifier:@"login2contacts" sender:nil];
- 在执行performSegueWithIdentifier 跳转 时,会调用prepareForSegue 方法,在prepareForSegue 中拿到ViewController 来传递数据
- /**
- * 执行segue后,跳转之前会调用这个方法
- * 一般在这里给下一个控制器传递数据
- */
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
- {
- // 1.取得目标控制器(联系人列表控制器)
- UIViewController *contactVc = segue.destinationViewController;
- // 2.设置标题
- contactVc.title = [NSString stringWithFormat:@"%@的联系人列表", self.accountField.text];
- // contactVc.title 等价于 contactVc.navigationItem.title
- // contactVc.navigationItem.title = [NSString stringWithFormat:@"%@的联系人列表", self.accountField.text];
- }
情景2 B—>A 当进入B时,B操作完成返回到A中,需要带回数据到A
思路,要想让B传递到A 首先创建一个代理对象,也就是新建一个协议, A来实现这个协议,那A就相当于一个代理, 然后把A的代理传入到B中,B来调用A中的协议中的方法
代码 :
- #import <UIKit/UIKit.h>
- @class MJAddViewController, MJContact;
- @protocol MJAddViewControllerDelegate <NSObject>
- @optional
- //- (void)addViewController:(MJAddViewController *)addVc didAddContactWithName:(NSString *)name phone:(NSString *)phone;
- - (void)addViewController:(MJAddViewController *)addVc didAddContact:(MJContact *)contact;
- @end
- @interface MJAddViewController : UIViewController
- @property (nonatomic, weak) id<MJAddViewControllerDelegate> delegate;
- @end
- /**
- * 添加
- */
- - (IBAction)add {
- // 1.关闭当前控制器
- [self.navigationController popViewControllerAnimated:YES];
- // 2.传递数据给上一个控制器(MJContactsViewController)
- // 2.通知代理
- if ([self.delegate respondsToSelector:@selector(addViewController:didAddContact:)]) {
- MJContact *contact = [[MJContact alloc] init];
- contact.name = self.nameField.text;
- contact.phone = self.phoneField.text;
- [self.delegate addViewController:self didAddContact:contact];
- }
- }
- A文件
- @interface MJContactsViewController () <MJAddViewControllerDelegate>
- /**
- * 执行跳转之前会调用
- * 在这个方法中,目标控制器的view还没有被创建
- */
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
- {
- id vc = segue.destinationViewController;
- // 设置下一个控制器(添加联系人的控制器)的代理
- MJAddViewController *addVc = vc;
- addVc.delegate = self;
- }
- #pragma mark - MJAddViewController的代理方法
- - (void)addViewController:(MJAddViewController *)addVc didAddContact:(MJContact *)contact
- {
- // 1.添加模型数据
- [self.contacts addObject:contact];
- // 2.刷新表格
- [self.tableView reloadData];
- }
[转]ios 数据的传递的更多相关文章
- iOS数据持久化-OC
沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...
- ios页面间传递参数四种方式
ios页面间传递参数四种方式 1.使用SharedApplication,定义一个变量来传递. 2.使用文件,或者NSUserdefault来传递 3.通过一个单例的class来传递 4.通过Dele ...
- Android学习之路——Android四大组件之activity(二)数据的传递
上一篇讲了activity的创建和启动,这一篇,我们来讲讲activity的数据传递 activity之间的数据传递,这里主要介绍的是activity之间简单数据的传递,直接用bundle传递基本数据 ...
- iOS数据存取---iOS-Apple苹果官方文档翻译
CHENYILONG Blog iOS数据存取---iOS-Apple苹果官方文档翻译 数据存取/*技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http:// ...
- iOS数据存储类型 及 堆(heap)和栈(stack)
iOS数据存储类型 及 堆(heap)和栈(stack) 一般认为在c中分为这几个存储区: 1栈 -- 由编译器自动分配释放. 2堆 -- 一般由程序员分配释放,若程序员不释放,程序结束时可能由O ...
- ASP.NET MVC5中View-Controller间数据的传递
使用ASP.NET MVC做开发时,经常需要在页面(View)和控制器(Controller)之间传递数据,那么都有哪些数据传递的方式呢? 本文对于View向Controller中传值共列举了以下几种 ...
- C#学习笔记-数据的传递(公共变量)以及Dictionary
看的代码越多,写的代码越多,就越是享受这些字符,终于渐渐懂得了那种传闻中的成就感,特别是自己从看不懂然后一步一步学,一个代码一个代码地敲,最后哪怕只是完成了一个小功能,也都是特别自豪的!这种自豪不用告 ...
- Intent之复杂数据的传递
想在两个Activity之间传递一个对象Result,在网上差了很多,都需要序列化或者时下Paracelable,等等,试了很多都不行. 后来才制单,这个Result,根本不需要集成Sereriabl ...
- ASP.NET MVC3入门教程之参数(数据)传递
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=98&extra=page%3D1 MVC模式的参数(数据)传递 ...
随机推荐
- javap -s 查看java方法签名
工程先用eclipse生成class目录,转到class目录下执行: javap -s com.example.hellojni.MainActivity Compiled from "Ma ...
- 理解Action,Service和Dao功能(转)
真正理解.区分Action,Service和Dao功能 在不分层的系统里,我们可以将所有的代码都写到一个地方,比如struts的Action类.在这里,我们不仅要处理页面逻辑,还要做业务逻辑,还要 ...
- sql2005数据库置疑修复断电崩溃索引损坏 数据库索引错误修复/数据库表损坏/索引损坏/系统表混乱等问题修复
sql2005数据库置疑修复断电崩溃索引损坏 数据库索引错误修复/数据库表损坏/索引损坏/系统表混乱等问题修复 客 户 名 称 济南某电子商务公司 数 据 类 型 SQL2005数据库 故 障 检 测 ...
- PHP下的命令行执行
PHP 的命令行模式 以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参数. Usage: php [options] [ ...
- C语言-知识点及学习路线
最近进行了为期两周的C语言培训,把几年前学过的C语言又重新学习了一遍,然后根据学习的内容和过程,总结了一下学习路线.这是基本的C语言学习路线,相当于编程语言类的基础,再根据自己究竟是要做单片机开发,还 ...
- UVa 10360 - Rat Attack
题目大意:有一个1025*1025的矩阵,每个矩阵元素保存这个点上老鼠的数量.现有一种气体炸弹,能覆盖“半径”为d的矩形,在这个范围内可以消灭所有的老鼠,让你找出合适的放置炸弹的位置使的消灭的老鼠数量 ...
- PHP与MySql建立连接
通过PHP脚本建立与一个MySQL数据库的连接时,数据库服务器的主机位置(在本地就是localhost).用户名(root).密码.和数据库名是必须的.一旦建立连接,脚本就能执行SQL命令.二者联系的 ...
- partial类修饰符
partial是一个类修饰符,用于把类定义拆分为几个部分,便于代码管理,如class ClassA{void A(){;}void B(){;}}与partial class ClassA{void ...
- 使用(Drawable)资源——LayerDrawable资源
与StateListDrawable有点类似,LayerDrawable也可包含一个Drawable数组,因此系统将会按这些Drawable对象的数组顺序来绘制它们,索引最大的Drawable对象将会 ...
- social relation & recommender system
由于社交网络盛行,现在许多关于推荐系统的研究都考虑了如何使用social relation来改进推荐系统.虽然有很多论文都成功的使用social relation改进了推荐效果,然而,也有一些尝试失败 ...