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

M牛C原创博客——MVC 模式中正向传值、反向传值

时间:2015-05-17 13:49:07      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:正向传值   反向传值   多mvc   ios开发   

多vc之间的传值

1)正向传值

当AVC推出BVC时,a给b传值叫做正向传值


2)正向传值实现步骤

step1:bvc要提供一个公开的属性

//公开一个属性,用于接收其他类出入的字符串

@property(nonatomic,copy)NSString *message;


step2:avc在推出bcc之前,为bvc公开的属性赋值

//1.创建要推出的bvc的实例

    BViewController *bvc = [[BViewController alloc]initWithNibName:@"BViewController" bundle:nil];

    //2.bvc公开的属性赋值

    bvc.message = self.textField.text;

    //3.推出

    [self presentViewController:bvc animated:YES completion:nil];


step3:bvc在一个合适的时机,显示avc传来的值

- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    self.label.text = self.message;

}



3)反向传值(回传)

AVC推出BVC,在b返回到a的过程中,b给a传值叫做反向传值

解决方案一:

step1:为avc增加用于接收返回的数据的属性

//公开一个属性,用于接收B回传回来的值


@property(nonatomic,copy)NSString *backMessage;


step2:为bvc增加用于接收avc引用的属性

//公开一个属性,用来存储avc的引用

@property(nonatomic,strong)AViewController *avc;


step3:avc在推出bvc之前,将自己赋值给bvc公开的属性

#import "AViewController.h"

#import "BViewController.h"


@interface AViewController ()

@property (weak, nonatomic) IBOutlet UILabel *label;


@end


@implementation AViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

}


- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    self.label.text = self.backMessage;

}




- (IBAction)gotoBVC:(id)sender {

    BViewController *bvc = [[BViewController alloc]initWithNibName:@"BViewController" bundle:nil];

    //avc将自己的引用传给了bvc

    bvc.avc = self;

    [self presentViewController:bvc animated:YES completion:nil];

}


step4:bvc在dismiss之前,将文本框的值赋值给存储的avc

step5:avc在viewWillAppear中显示回传的值


@interface BViewController ()

@property (weak, nonatomic) IBOutlet UITextField *textField;


@end


@implementation BViewController

- (void)viewDidLoad

{

    [super viewDidLoad];

   

}


- (IBAction)gobackAVC:(id)sender {

    self.avc.backMessage = self.textField.text;

    [self dismissViewControllerAnimated:YES completion:nil];

}




解决方案二:委托

/*

1.定义协议

    1)协议命名:类名+Delegate

    2) 方法的命名:尽量体现发消息的时机

    3)方法的参数:第一个参数一定是委托方自己,后面的参数可以为委托方发给代理方的辅助信息

2.定义一个属性,用于存储代理方的引用

3.在合适的时机给代理方发消息

*/

/*

在回传值的过程中,InputViewController为委托方,AViewController为代理方

1.遵守协议

2.实现方法

3.设置自己为代理方

*/


M牛C原创博客——MVC 模式中正向传值、反向传值

标签:正向传值   反向传值   多mvc   ios开发   

原文地址:http://blog.csdn.net/qq_17354271/article/details/45787757

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