(七十二)自己定义通知NSNotification实现消息传递

众所周知,iOS中一般在类之间传递消息使用较多的是delegate和block,另一种是基于通知进行的消息传递,我们经常是使用系统的通知。来实现一些功能。比如利用键盘尺寸改变的通知,我们能够依据键盘的位置改变输入框的位置,从而避免输入框被键盘遮挡。

除了利用系统的通知,我们还能够通过自己创建通知的办法来完毕一些消息传递。以XMPP登录为例,假设用户之前没有注销,那么在启动client时应该自己主动登录,登录在XMPP的工具类完毕。而当前视图在登陆完毕之前应当用网络连接的指示器(Activity Indicator)旋转指示,而连接完毕后应当隐藏指示器,何时连接成功就须要工具类通知视图控制器,我们这次用通知来实现。

通知要实现很easy,仅仅须要监听和发送就可以,回顾一下当时监听键盘,须要指定通知的名称,标准格式是类名+功能+Notification,比較长,因此用一个常量字符串来获取类名。防止输入错误。

①创建常量字符串:

直接在发送通知的.m头部写:

NSString *const WCLoginStatusChangeNotification = @"WCLoginStatusNotification";

然后在.h中声明。以便监听通知时调用:

extern NSString *const WCLoginStatusChangeNotification;

②让视图控制器监听通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginStatusChange:) name:WCLoginStatusChangeNotification object:nil];

然后实现监听方法,參数为NSNotification对象。当中有一个userInfo成员属性用于传递消息。是一个字典。

③发送一个通知:

[[NSNotificationCenter defaultCenter] postNotificationName:WCLoginStatusChangeNotification object:nil userInfo:<字典>];

传递參数利用的是userInfo參数。仅仅须要赋一个字典,就可以传递到监听的事件函数中。

时间: 2024-11-07 12:21:50

(七十二)自己定义通知NSNotification实现消息传递的相关文章

(七十二)自定义通知NSNotification实现消息传递

众所周知,iOS中一般在类之间传递消息使用较多的是delegate和block,还有一种是基于通知进行的消息传递,我们常常是使用系统的通知,来实现一些功能,例如利用键盘尺寸改变的通知,我们可以根据键盘的位置改变输入框的位置,从而避免输入框被键盘遮挡. 除了利用系统的通知,我们还可以通过自己创建通知的办法来完成一些消息传递,以XMPP登录为例,如果用户之前没有注销,那么在启动客户端时应该自动登录,登录在XMPP的工具类完成,而当前视图在登陆完成之前应当用网络连接的指示器(Activity Indi

鬼谷子七十二术(完整版)值得永久收藏!终生研读!

静中有动,动中有静,“变生于事.事生谋.谋生计.计生议.议生说.说生进.进生退.退生制,因以于制事”. 第一计 阳谋阴谋 鬼谷子曰:“智略计谋,各有形容,或圆或方,或阴或阳,圣人谋之于阴故曰‘神’,成之于阳故曰‘明’,所谓主事成者,积德也.” 计谋,有阴谋和阳谋之别,在任何情况下,人们都不可轻视对方,因为事件.环境.情报都有假的.所以圣人应该高深莫测.鬼谷子所谓“阴”,是谋之于阴成之于阳.第二计 扭转乾坤鬼谷子曰:“故静固志意,神归其舍,则威覆盛矣,威覆盛,则内实坚,内实坚,则莫当.” 鬼谷子认

Linux学习总结(七十二)虚拟化之kvm

一 虚拟化介绍 1 常见虚拟化软件VMware系列VMware workstation.VMware vsphere(VMware esxi).VMware Fusion(Mac) Xen 开源 半虚拟化XenServer 商业,厂商Ctirx,基于Xen的KVM 开源 基于linux内核模块Hyper-V 商业,厂商微软Openvz 开源 基于linux 虚拟机和宿主机共用一个内核VirtualBox 开源 Sun公司开发 Oracle收购Sunhttp://developer.huawei.

Android笔记(七十二) Style和Theme

我们尝尝需要使用setText.setColor.setTextSize等属性来设置控件的样式,但是每个控件都需要设置这些属性,工作量无疑是巨大的,并且后期维护起来也不方便. Style Android中的样式(style)包含一组格式,为一个组件设置使用某个样式时,该样式所包含的全部格式都将会应用在这个组件上. Android的样式资源文件放在/res/values目录下,其跟元素是<resources>,该元素内包含多个<style>子元素,每个子元素都是一个样式. <s

salesforce零基础学习(七十二)项目中的零碎知识点小总结(一)

项目终于告一段落,虽然比较苦逼,不过也学到了好多知识,总结一下,以后当作参考. 一.visualforce标签中使用html相关的属性使用 曾经看文档没有看得仔细,导致开发的时候走了一些弯路.还好得到了小兵同学的指点,get到了一个简单实用的知识.即使用html- + attribute方式,在visualforce标签解析成html标签时,添加相关属性,从而实现一些功能性的校验等功能. 比如我们经常会用到<apex:inputTextarea>标签来放置textarea字段的前台显示,而对于

three.js 源码注释(七十二)extras/geometries/PlaneGeometry.js

商域无疆 (http://blog.csdn.net/omni360/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:商域无疆 -  本博客专注于 敏捷开发及移动和物联设备研究:数据可视化.GOLANG.Html5.WEBGL.THREE.JS,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 俺也是刚开始学,好多地儿肯定不对还请见谅. 以下代码是THREE.JS 源码文件中extras/geometries/PlaneGeometry.js文件的注释. 更多

GridView七十二绝技-大全(收藏版)(转至别人博客)

快速预览:GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠标移到GridView某一行时改变该行的背景色方法一鼠标移到GridView某一行时改变该行的背景色方法二GridView实现删除时弹出确认对话框GridView实现自动编号GridView实现自定义时间货币等字符串格式GridView实现用“...”代替超长字符串GridView一般换行与强制换行

第七十二篇 jquery基础

目录 一.jQuery引入 1.jq API 2.jq初识 二.jq选择器 三.jq事件 四.jq内容操作 五.jq样式操作 一.jQuery引入 # 导读 JQuery jq就是js工具库,即一系列功能的集合体 jq内部语法采用的就是原生js jq环境如何搭建:在需要使用jq的html中引入JQuery.js文件即可 本地导入(导入下好的文件) <script src="js/jquery-3.4.1.min.js"></script> cdn导入(链接外部资

第二百七十二、三天 how can I 坚持

昨天加班回来都很晚了,也忘了些日志了.其实感觉加班也没什么啊,一个团队在一块说说闹闹,愉快的完成工作挺好. 今天是2015年的最后一天,2015的愿望啊,只怪自己太怂了.不怂会是什么结果. 其实更应该淡定,淡定了就不怂了. 明天就2016的. 记得上一年这时候,我们应该匆匆忙忙的赶往泉城广场去跨年了,然后夸完年,我和耀哥就开始了一段艰难的回家路啊,半路电动三轮车没电了,推着回的家啊. 2016年新年愿望,结婚,还有能买到自己喜欢的房子,还有一个几乎不可能实现的愿望,当爸爸.好想要个属猴的孩子.