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

多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.设置自己为代理方

*/

时间: 2024-11-03 22:02:00

M牛C原创博客——MVC 模式中正向传值、反向传值的相关文章

M牛C原创博客——IOS开发中手势滑动的6种技巧

手势的种类 所有手势的父类:UIGestureRecognizer 6种手势:UI XXX GestureRecognizer UITapGestureRecognizer  点击一下屏幕 UISwipeGestureRecognizer  轻扫屏幕,如解锁 UILongPressGestureRecognizer 长按手势 UIPinchGestureRecognizer  捏合手势 UIPanGestureRecognizer 移动手势 UIRotationGestureRecognizer

M牛C原创博客——UI之文本框输入键盘自动退出,点击空白处退出,切换下个文本框

如何关闭系统弹出的键盘? 1)触屏动作发生后的系统处理过程 step1:查找hitView 系统捕获到触屏动作后,记录触点的坐标,给window发hitTest:消息,并告知出点坐标,window会给所有直接子对象发送hitTest消息,告知点坐标,子对象检测坐标是否在其中,如果不在其中,则返回nil,如果点在其中,则再继续给所有直接子视图发消息,直到某一个子视图,不再有子视图,且触点在其中,则返回这个对象,系统就找到了本次点击的对象 step2:找到hitView后,执行事件响应 查看找到的h

M牛C原创博客——IOS中Quartz2D使用中的注意知识点

1> Quartz2D简介 什么是Quartz2D?二维的绘图引擎 什么是二维?平面 什么是引擎?经包装的函数库,方便开发者使用.也就是说苹果帮我们封装了一套绘图的函数库 同时支持iOS和Mac系统什么意思?用Quartz2D写的同一份代码,既可以运行在iphone上又可以运行在mac上,可以跨平台开发. 开发中比较常用的是截屏/裁剪/自定义UI控件. Quartz2D在iOS开发中的价值就是自定义UI控件. 图形上下文的数据类型和作用. 有多少种上下文. 自定义控件的步骤. 为什么要实现dra

M牛C原创博客——IOS开发面试题(葵花宝典)

GCD怎么用的? ? 1.串行队列,同步操作,不会新建线程,操作顺序执行: ?   串行队列,异步操作,会新建线程,操作顺序进行,使用场景:既不影响主线程,又需要顺序执行的操作: ? 2.并行队列,同步操作,不会新建县城,操作顺序执行: ?   并行队列,异步操作,会新建线程,操作无序进行,队列前如果有其他任务,会等待其他任务执行完毕再执行: ? 全局队列是系统的,直接get就可以用 ? UI的更新工作必须在主线程进行, ? 全局队列异步操作,会新建对个子线程,操作无序执行,如果队列前有其他任务

为什么原创博客被认为是转载?对51cto博客有点小失望

寒假时候,打算从博客园转移到51cto博客,于是满心欢喜的把几篇博客转接到这边来,以后打算长此在这边发表博文.可是今天发现了"原创博客文章被判为转载"扣除了四次.那么我有几个问题 1.为何我的原创文章只有3篇,会被扣除4次? 2.为何原创文章被判定为转载,我在其他博客上面发表的,不能拿到这边来吗. 3.被判定为转载的文章, 十二生肖查询网页版制作(php) 今天无聊做了一个十二生肖查询器: 预览网址效果:http://hongxing01.hktd02u.me48.com/03Sxcx

转 那些C++牛人的博客

来自http://towriting.com/blog/2013/12/12/cpp-blogs/ 那些C++牛人的博客 2013-12-12 现整理收集C++世界里那些“牛人”的个人博客.凡三类:一是令人高山仰止的大牛,对C++语言本身产生过深远的影响的人:二是C++运用炉火纯青的高手,有原创性的技术干货:三是中文世界里的C++牛人. C++大牛的博客 Bjarne Stroustrup的博客: Bjarne Stroustrup’s Homepage Bjarne Stroustrup,不认

00--C++牛人的博客

那些C++牛人的博客 这篇文章来自转载,转载的网址找不到了,   如果有人知道,可以在下面评论, 非常感谢,更感谢原作者. 现整理收集C++世界里那些“牛人”的个人博客.凡三类:一是令人高山仰止的大牛,对C++语言本身产生过深远的影响的人:二是C++运用炉火纯青的高手,有原创性的技术干货:三是中文世界里的C++牛人. C++大牛的博客 Bjarne Stroustrup的博客: Bjarne Stroustrup’s Homepage Bjarne Stroustrup,不认识的可以去面壁了,没

通过urllib.request爬取CSDN原创博客标题方法封装

通过urllib.request爬取CSDN博客原创博客标题方法封装 正则表达式:pat = '<span class=".*">原创</span>(.*)</a>' import re import urllib.request def get_csdn(url, pat, page): title_list = [] for page1 in range(1, int(page) + 1): new_url = url + str(page1)

教育博客在实践中实际上已经发展成为记录教师专业成长

教育博客在实践中实际上已经发展成为记录教师专业成长.发布课题研究成果和反映学校发展历程的工作日 志.网络文集和多媒体成长档案袋.教师可以通过教育博客来记录自己的教育教学实况,跟踪自己的专业发展轨迹,分析进步,查找不足,积累和分享自己的成功经 验和教育智慧:同时,教师也可通过教育博客来收藏.整理自己所需的学习资源,了解教学研究的动态.建立教育博客,可使教师通过开放自己的教学材料.实践体 验和研究心得,在与专家学者.教研员以及更多一线教师乃至学生的互动交流中,逐步成为教学知识的生产者和课程资源的承载