UI_通知中心_传值的一种方法

NSNotification

通知中心传值,可以跨越多个页面传值, 一般也是从后面的页面传给前面的页面。

思路:

第三个界面的值传给第一个界面。

1. 在第一个界面建立一个通知中心, 通过通知中心,注册一个监听事件

2. 在第一个界面中,设置接收到通知的事件。

3. 在第一个界面中的dealloc中, 将通知中心remove掉

4. 在第三个界面中, 建立一个通知中心, 通过通知中心, 发送通知(发送通知的过程就是传值的过程,将要传输的值作为object的值传给第一个界面

代码片段:

第一界面:

//通知中心是个单例

NSNotificationCenter *notiCenter = [NSNotificationCenter defaultCenter];

// 注册一个监听事件。第三个参数的事件名, 系统用这个参数来区别不同事件。

[notiCenter addObserver:self selector:@selector(receiveNotification:) name:@"cesuo" object:nil];

// @selector(receiveNotification:)方法, 即受到通知之后的事件

- (void)receiveNotification:(NSNotification *)noti

{

// NSNotification 有三个属性,name, object, userInfo,其中最关键的object就是从第三个界面传来的数据。name就是通知事件的名字, userInfo一般是事件的信息。

NSLog(@"%@ === %@ === %@",
noti.object, noti.userInfo, noti.name);

}

// 第一界面中dealloc中移除监听的事件

- (void)dealloc

{

// 移除当前对象监听的事件

[[NSNotificationCenter defaultCenter] removeObserver:self];

[super dealloc];

}

第二界面:

// 创建一个通知中心

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

// 发送通知. 其中的Name填写第一界面的Name, 系统知道是第一界面来相应通知, object就是要传的值。 UserInfo是一个字典, 如果要用的话,提前定义一个字典, 可以通过这个来实现多个参数的传值使用。

[center postNotificationName:@"cesuo" object:@"zhangheng" userInfo:dic];

时间: 2024-08-29 09:38:54

UI_通知中心_传值的一种方法的相关文章

一篇文章学会页面传值的10种方法(下)

一篇文章学会页面传值的10种方法(下) 6.代理委托实现页面之间的反向传值 这一种方法就是运用协议实现传值,这种方式也是在工程中常用的一种传值方法.首先创建好ViewController和SubViewController,在ViewController中创建好一个展示信息的Label,在SubViewController中创建好一个TextFeild,我们实现在第二个界面点击屏幕时,将TextFeild中的文字传到第一个界面,然后让背景颜色变色. 效果如下: 代理传值.gif 第一步: 首先我

一篇文章学会页面传值的10种方法(上)

一篇文章学会页面传值的10种方法(上) 1.最简单AB面正向传值 效果如下: 最简单的正向传值.gif 首先我们先创建两个视图控制器ViewController.swift和SubViewController.swift 设置第一个界面 首先在第一个界面创建好一个TextFeild,用来写我们要传的文字 import UIKit class ViewController: UIViewController {     let textField = UITextField()     overr

Android之intent传值的三种方法

Android之intent传值的三种方法分别是:1.startActivity():2.startActivityForResult():3.调用在下个activity自定义的方法"actionStart()",也就是最佳的方法. 一.一般方式传值跳转:startActivity()方法 /* 在MainActivity中定义如下代码 */ button1.setOnClickListener(new OnClickListener() { @Override public void

MVC控制器向View视图传值的三种方法

首先创建一个MVC的项目,其中需要一个控制器(TestController),三个视图(index,edit,detail) 1.项目结构如下: 2.控制器向视图传值的三种方法 1)提供视图模型对象(直接把对象放在View里面) 2)通过VewBag传递数据 3)通过ViewData传递数据 3.控制器源码如下: using System;using System.Collections.Generic;using System.Linq;using System.Web;using Syste

iOS UI-界面传值(三种方法)

1 #import <Foundation/Foundation.h> 2 3 @interface DataModel : NSObject 4 5 @property (nonatomic, copy) NSString *name; 6 @property (nonatomic, copy) NSString *address; 7 8 @end 9 10 #import "DataModel.h" 11 12 @implementation DataModel 13

GRIDVIEW传值的两种方法

第一种方法:在onselectedindexchanged中写事件 第二种方法:OnRowCommand事件 前端页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> ? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1

.Net子窗体给父窗体传值的几种方法

其实方法有很多种,这里只介绍3种,大家如有更好的方法可互相学习学习. 1.子父窗体Owner设定法: Form1: void Button_fm1_Click(object sender, EventArgs e) { Form2 fm2 = new Form2(); fm2.Owner = this;   //将Form2的Owner指针指向Form1 fm2.ShowDialog(); } Form2: void Button_fm2_Click(object sender, EventAr

窗口间传值的几种方法

刚開始学Winform的同学基本上都会遇到窗口传值的问题,怎样解决问题,事实上就是须要解决你对窗口的一个理解. 一定要记住,窗口(Form),它是一个类(Class).! namespace MyForm { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } } Form1,前面的修饰都是跟类相关的,比如public partial class.还有Form1的构造方法等等,都是一个类基

窗体间传值的几种方法

刚开始学Winform的同学基本上都会遇到窗体传值的问题,如何解决这个问题,其实就是需要解决你对窗体的一个理解. 一定要记住,窗体(Form),它是一个类(Class)!! namespace MyForm { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } } Form1,前面的修饰都是跟类相关的,例如public partial class,还有Form1的构造方法等等,都是一个类