iOS:切换视图时,反向传递数据方法一:通知
通知方式:
1.有一个(单例)通知中心,负责管理iOS中的所有通知
2.需要获取某种通知,必须注册成为观察者(订阅)
3.不再需要取某种通知时,要取消注册。
4.你可以向通知中心发送某种通知,通知中心会转发给相应的观察者(订阅者)。
将第一个控制器和第二个控制器以modal(push)方式联接后,每一个控制器和各自的类相关联,同时将segue的idetifier标识设置一个名字,正向传数据时,需要根据segue的标识符进行唯一的识别。反向传数据时,采用通知的方法。
1、所有的文件:
2、第一个控制器FirstViewController关联的类为:
3、第二个控制器SecondViewcontroller关联的类为:
4、给segue的identifier设置一个名字,作为标识
具体代码如下:
FirstViewController控制器关联的viewController(.h/.m)类:
#import "ViewController.h"
#import "SecondViewController.h" @interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *firstTextField; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
} //重写该方法,视图切换时,自动调用
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"modal"])
{
//获取目的控制器
SecondViewController *secondVC = segue.destinationViewController; //正向传数据
secondVC.information = self.firstTextField.text; //注册通知,成为观察者
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(receiveInfo:) name:NOTIFICATIONTEPY object:nil];
}
} //receiveInfo事件
-(void)receiveInfo:(NSNotification*)notification
{
//反向接收通知中的数据
self.firstTextField.text = [notification.userInfo objectForKey:NOTIFICATIONINFOKEY]; //取消注册
[[NSNotificationCenter defaultCenter]removeObserver:self name:NOTIFICATIONTEPY object:nil];
}
@end
SecondViewController控制器关联的SecondViewController(.h/.m)类:
#import "SecondViewController.h" @interface SecondViewController ()
@property (weak, nonatomic) IBOutlet UITextField *secondTextField; @end @implementation SecondViewController
//返回时的触发事件
- (IBAction)returnClicked:(UIBarButtonItem *)sender
{
//反向传递数据 //1、消息内容
NSDictionary *dicInfo = @{NOTIFICATIONINFOKEY:self.secondTextField.text}; //2、通过通知中心传递出去
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATIONTEPY object:self userInfo:dicInfo]; //关闭模态窗口
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
//[self dismissViewControllerAnimated:YES completion:nil];
} - (void)viewDidLoad {
[super viewDidLoad]; // 显示文本框内容(接受传递过来的数据)
self.secondTextField.text = self.information;
} @end
iOS:切换视图时,反向传递数据方法一:通知的更多相关文章
- iOS:切换视图时,反向传递数据方法二:代理
代理: 1.发送信息的控制器设置一个代理,并自定义一个代理的方法,用来传递数据 2.接受信息的控制器遵循发送信息的控制器的协议 3.接受信息的控制器设置发送信息的控制器的代理为自己self 4.接受信 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- iOS - 切换rootViewController时,销毁之前的控制器
一.iOS在切换根控制器时,如何销毁之前的控制器?(切换rootViewController时注意的内存泄漏) 首先.在iOS的ARC机制下,任何对象,当没有其他对象对他进行强引用时,都会被自动释放. ...
- iOS:多个单元格的删除(方法一)
采用存取indexPath的方式,来对多个选中的单元格进行删除 删除前: 删除后: 分析:如何实现删除多个单元格呢?这需要用到UITableView的代理方法,即选中单元格时对单元格做的处理,同时我们 ...
- Intent界面跳转与传递数据
Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. intent可以激活Activity,服务,广播三类组件. 本博文讲的是显示意图激活Activity组件 ...
- ASP.NET MVC 5 学习教程:控制器传递数据给视图
原文 ASP.NET MVC 5 学习教程:控制器传递数据给视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字 ...
- MVC怎么在当前视图中,传递参数给到另外一个视图?
在TransData.cshtml视图中: <div> <!--在一个视图中,请求另外一个视图,并且将数据传到另外一个视图--> <!--视图中调用无返回值的方法,需要加 ...
- 【ASP.NET MVC】View与Controller之间传递数据
1 概述 本篇文章主要从操作上简要分析Controller<=>View之间相互传值,关于页面之间传值,如果感兴趣,可参考我另外一篇文章ASP.NET 页面之间传值的几种方式 . Co ...
- ASP.NET MVC中从后台控制器(Controller)传递数据到前台页面视图(View)方式
方式一: 数据存储模型Model: public class CalendarEvent { public string id { get; set; } public DateTime start ...
随机推荐
- JavaScript快速找出字符串并返回其下标
var box = "this is javascript"; for (var i = -1, arr = []; (i = box.indexOf("s", ...
- Robot Framework自动化测试的应用
Robot Framework自动化测试的应用(一) 最近尝试用Robot Framework代替之前全部采用python实现测试case,开始对Robot Framework进行些了解学习. 1. ...
- Java 中 JDBC 基础配置
Java 中 JDBC 基础配置 <resource auth="Container" driverclassname="oracle.jdbc.driver.Or ...
- Linux与其它类Unix内核的比较
单块结构的内核:由几个逻辑上独立的成分构成,单块结构,大多数据商用Unix变体也是单块结构: 编译并静态连接的传统Unix内核:Linux能自动按需动态地装载和卸载部分内核代码(模块),而传统Unix ...
- vue 阻止事件冒泡
<mt-button type="danger" size="small" @click="cancelOrderInfo(this.even ...
- 转:Ubuntu16.04下配置php+vscode+xdebug开发环境
转:https://blog.csdn.net/its_my_dream/article/details/78549619 操作系统是Ubuntu16.04,首先要安装和配置php运行环境,我这里用的 ...
- mybatis基础之一
SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE conf ...
- Windows 下安装 tensorflow & keras & opencv 的避坑指南!
安装 Anaconda3 关键的一步: conda update pip 下面再去安装各种你需要的包,一般不会再报错. pip install -U tensorflow pip install -U ...
- springMVC整合freemarker遇到的问题 maven
java.lang.IllegalAccessError: tried to access method freemarker.ext.servlet.AllHttpScopesHashModel.& ...
- 【BZOJ 3144】 3144: [Hnoi2013]切糕 (最小割模型)
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1764 Solved: 965 Description Inp ...