情景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 数据的传递的更多相关文章

  1. iOS数据持久化-OC

    沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...

  2. ios页面间传递参数四种方式

    ios页面间传递参数四种方式 1.使用SharedApplication,定义一个变量来传递. 2.使用文件,或者NSUserdefault来传递 3.通过一个单例的class来传递 4.通过Dele ...

  3. Android学习之路——Android四大组件之activity(二)数据的传递

    上一篇讲了activity的创建和启动,这一篇,我们来讲讲activity的数据传递 activity之间的数据传递,这里主要介绍的是activity之间简单数据的传递,直接用bundle传递基本数据 ...

  4. iOS数据存取---iOS-Apple苹果官方文档翻译

    CHENYILONG Blog iOS数据存取---iOS-Apple苹果官方文档翻译 数据存取/*技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http:// ...

  5. iOS数据存储类型 及 堆(heap)和栈(stack)

    iOS数据存储类型 及 堆(heap)和栈(stack) 一般认为在c中分为这几个存储区: 1栈 --  由编译器自动分配释放. 2堆 --  一般由程序员分配释放,若程序员不释放,程序结束时可能由O ...

  6. ASP.NET MVC5中View-Controller间数据的传递

    使用ASP.NET MVC做开发时,经常需要在页面(View)和控制器(Controller)之间传递数据,那么都有哪些数据传递的方式呢? 本文对于View向Controller中传值共列举了以下几种 ...

  7. C#学习笔记-数据的传递(公共变量)以及Dictionary

    看的代码越多,写的代码越多,就越是享受这些字符,终于渐渐懂得了那种传闻中的成就感,特别是自己从看不懂然后一步一步学,一个代码一个代码地敲,最后哪怕只是完成了一个小功能,也都是特别自豪的!这种自豪不用告 ...

  8. Intent之复杂数据的传递

    想在两个Activity之间传递一个对象Result,在网上差了很多,都需要序列化或者时下Paracelable,等等,试了很多都不行. 后来才制单,这个Result,根本不需要集成Sereriabl ...

  9. ASP.NET MVC3入门教程之参数(数据)传递

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=98&extra=page%3D1 MVC模式的参数(数据)传递 ...

随机推荐

  1. driver_register()函数解析

    driver_register()函数解析 /** * driver_register - register driver with bus * @drv: driver to register *  ...

  2. 子窗口url调整导致父窗口刷新

    2014年3月19日 10:22:38 如题: 在弹窗里搜索时,url发生改变,导致父窗口的div消失.为何? 之前的逻辑是隐藏div 现在修改为插入节点 .可是还是刷新字窗口后,父窗口里面的div节 ...

  3. centos5.5开机自动启动服务的方法

    *** chkconfig --list 查看所有的***chkconfig --list smb 查看指定的输出的结果:httpd           0:off   1:off   2:off   ...

  4. Android应用程序组成部分

    引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西.本篇的主题如下: 1.应用程序基础 2.应用 ...

  5. LNMP 快速安装

    网址是:http://lnmp.org/install.html 值得注意的是:它基本上把所有的扩展都装上了,有点冗余 安装完成后,根目录的位置是 /home/wwwroot/default LNMP ...

  6. --@angularJS--指令与指令之间的交互demo

    1.index.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title>c ...

  7. [ Android 五种数据存储方式之四 ] —— ContentProvider存储数据

    Android这个系统和其他的操作系统还不太一样,我们需要记住的是,数据在Android当中是私有的,当然这些数据包括文件数据和数据库数据以及一些其他类型的数据.那这个时候有读者就会提出问题,难道两个 ...

  8. JIRA描述默认值设置

    JIRA描述默认值设置 Setting a Default Value in the Description Field 转自https://confluence.atlassian.com/jira ...

  9. FMS+NGINX打造高带宽利用率的流媒体(音频+视频)环境

    fms自身已经拥有了httpd,用来给客户端访问用,例如通过http的音频播放.众所周知,非专业的httpd自然有不专业之处,例如我遇到的情况就是经常http服务假死,或者在访问量庞大的时候会无缘无故 ...

  10. EntityFramework 简单入个门

    任何一个和数据相关的系统里,数据持久化都是一个不容忽视的问题. 一直以来,Java 平台出了很多 NB 的 ORM 框架,Hibernate.MyBatis等等..NET 平台上,ORM 框架这一块一 ...