码迷,mamicode.com
首页 > 移动开发 > 详细

[转]ios 数据的传递

时间:2016-07-13 13:38:59      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

情景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 数据的传递

标签:

原文地址:http://www.cnblogs.com/leipDao/p/5666468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!