iOS:切换视图时,反向传递数据方法一:通知

通知方式:

1.有一个(单例)通知中心,负责管理iOS中的所有通知

2.需要获取某种通知,必须注册成为观察者(订阅)

3.不再需要取某种通知时,要取消注册。

4.你可以向通知中心发送某种通知,通知中心会转发给相应的观察者(订阅者)。

将第一个控制器和第二个控制器以modal方式联接后,每一个控制器和各自的类相关联,同时将segue的idetifier标识设置一个名字,正向传数据时,需要根据segue的标识符进行唯一的识别。反向传数据时,采用通知的方法。

1、所有的文件:

2、第一个控制器FirstViewController关联的类为:

3、第二个控制器SecondViewcontroller关联的类为:

4、给segue的identifier设置一个名字,作为标识

具体代码如下:

FirstViewController控制器关联的viewController(.h/.m)类:

 1 #import "ViewController.h"
 2 #import "SecondViewController.h"
 3
 4 @interface ViewController ()
 5 @property (weak, nonatomic) IBOutlet UITextField *firstTextField;
 6
 7 @end
 8
 9 @implementation ViewController
10
11 - (void)viewDidLoad {
12     [super viewDidLoad];
13 }
14
15 //重写该方法,视图切换时,自动调用
16 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
17 {
18     if([segue.identifier isEqualToString:@"modal"])
19     {
20         //获取目的控制器
21         SecondViewController *secondVC = segue.destinationViewController;
22
23         //正向传数据
24         secondVC.information = self.firstTextField.text;
25
26         //注册通知,成为观察者
27         [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(receiveInfo:) name:NOTIFICATIONTEPY object:nil];
28     }
29 }
30
31 //receiveInfo事件
32 -(void)receiveInfo:(NSNotification*)notification
33 {
34     //反向接收通知中的数据
35     self.firstTextField.text = [notification.userInfo objectForKey:NOTIFICATIONINFOKEY];
36
37     //取消注册
38     [[NSNotificationCenter defaultCenter]removeObserver:self name:NOTIFICATIONTEPY object:nil];
39 }
40 @end

SecondViewController控制器关联的SecondViewController(.h/.m)类:

 1 #import "SecondViewController.h"
 2
 3 @interface SecondViewController ()
 4 @property (weak, nonatomic) IBOutlet UITextField *secondTextField;
 5
 6 @end
 7
 8 @implementation SecondViewController
 9 //返回时的触发事件
10 - (IBAction)returnClicked:(UIBarButtonItem *)sender
11 {
12     //反向传递数据
13
14     //1、消息内容
15     NSDictionary *dicInfo = @{NOTIFICATIONINFOKEY:self.secondTextField.text};
16
17     //2、通过通知中心传递出去
18     [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATIONTEPY object:self userInfo:dicInfo];
19
20     //关闭模态窗口
21     [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
22     //[self dismissViewControllerAnimated:YES completion:nil];
23 }
24
25 - (void)viewDidLoad {
26     [super viewDidLoad];
27
28     // 显示文本框内容(接受传递过来的数据)
29     self.secondTextField.text = self.information;
30 }
31
32 @end
时间: 2024-10-19 11:46:55

iOS:切换视图时,反向传递数据方法一:通知的相关文章

iOS:切换视图时,反向传递数据方法二:代理

代理: 1.发送信息的控制器设置一个代理,并自定义一个代理的方法,用来传递数据 2.接受信息的控制器遵循发送信息的控制器的协议 3.接受信息的控制器设置发送信息的控制器的代理为自己self 4.接受信息的控制器实现协议中的方法,即接受数据 首先将控制器通过modal(push)方式联接,同时设置segue的identifier标识,因为这个identifier是与目的控制器唯一的识别的方式,最后再进行代码操作. 1.所有文件: 2.让FirstViewController关联自己的类ViewCo

iOS_18_控制器切换_NavigationController_push方式_传递数据

最终效果图: storyboard示意图: BeyondViewController.h // // BeyondViewController.h // 18_控制器切换_navigation_push_通过storyboard方式 // // Created by beyond on 14-7-31. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import <UIKit/UIKit.h> @interface Be

ios 页面跳转之间传递数据----通过delegate

主要参考了这篇博客http://mobile.51cto.com/iphone-284116.htm 主要用到了,两个类,一个delegate a类,调用b类,当b类执行之后,需要把一个数据传递给a类,a类把这个数据显示出来. 1.delegate,就这一个头文件就足够了.在类中去实现这个代理方法 #import <Foundation/Foundation.h> @protocolUIViewPassValueDelegate - (void)passValue:(NSString*)val

MVC学习系列9--从视图向控制器传递数据

前面学习了,从控制器向视图传递数据,现在学习怎么从视图向控制器传递数据. 通常,我们有两种方式,来处理浏览器的请求,一个是GET方式,一个是POST方式.一般来说,直接通过在浏览器中输入URL话,请求的方式是GET,那么GET方式的Action方法将会被调用,另一方面,如果是点击一个Button提交一个表单的话,这个时候POST方式的Action就会被调用. 这里我们说的是POST方式,怎么从视图向控制器传递数据,即把用户输入的表单信息的数据,传递到控制器对应的Action方法中. 这里先列举一

IOS 切换 Tab 时 百度地图出现会闪动一下

- (void)viewWillAppear:(BOOL)animated {     [super viewWillAppear:animated];     [MobClick beginLogPageView:@"WrapperMainViewController"];      //    [_mapView viewWillAppear]; //注释后消除切换 tab 地图闪现问题     _mapView.delegate = self; // 此处记得不用的时候需要置ni

iOS:多个单元格的删除(方法一)

采用存取indexPath的方式,来对多个选中的单元格进行删除 删除前: 删除后: 分析:如何实现删除多个单元格呢?这需要用到UITableView的代理方法,即选中单元格时对单元格做的处理,同时我们也要定义一个可变的数组,用来存储选中的数据,以便后来的删除.这里采用存储indexPath的方式,因为每选中一个单元格时,它都对应着一个indexPath,同时,将选中的单元格添加指引视图,即打对勾,也要判断打对勾是否重复,根据此来显示单元格的标记.最后,将标记的数据全部在原数据库中删除,同时在清空

Intent界面跳转与传递数据

Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. intent可以激活Activity,服务,广播三类组件. 本博文讲的是显示意图激活Activity组件.所谓显示意图就是在activity的激活时,显示指出了需要激活的activity的名字. 一.Activity跳转 方法一Intent intent = new Intent(A.this, B.class);  startActivity(intent) 方法二Intent intent = n

在ViewController之间传递数据的方法【iOS】

在ViewController之间传递数据的方法有不少,博主这里总结两种最常用的方法给大家: 我们假设有 视图控制器A 和 视图控制器B,其中我们设视图控制器B 是由 视图控制器A通过Navigation controller Push过去的,也就是说视图控制器B是视图控制器A的子视图控制器. 下面我们就分别通过 A->B 和 B->A传递数据说明两种在视图控制器之间传递数据的方法. 1.由视图控制器A传递数据给视图控制器B 这里,我的视图控制器A是 ViewController 视图控制器B

MVC怎么在当前视图中,传递参数给到另外一个视图?

在TransData.cshtml视图中: <div> <!--在一个视图中,请求另外一个视图,并且将数据传到另外一个视图--> <!--视图中调用无返回值的方法,需要加上大括号--> @{ViewBag.ViewTransData="我是视图TransData中定义的数据,将要被传递到LoadViewBySelf视图中";} @{Html.RenderPartial("LoadViewBySelf");} </div>