您的位置:首页 > 移动开发 > IOS开发

ios 跳转数据的传递

2015-04-21 10:05 429 查看
情景1: A-->B  需要把数据传递到B里

代码:

[objc] view
plaincopy





 // 跳转 -- 执行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中的协议中的方法
代码 B:

[objc] view
plaincopy





#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];  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息