Swift中通知中心(NotificationCenter)的使用示例

前言

本文主要介绍了关于Swift通知中心(NotificationCenter)使用的相关内容,NotificationCenter是Swift中一个调度消息通知的类,采用单例模式设计,实现传值、回调等作用。

通知的作用还是挺强大的,对于两个不相关的控制器之间,要进行信息的传递,使用通知是个不错的选择,下面话不多说了,来一起看看详细的使用方法吧。

1、添加通知

  /// 通知名
  let notificationName = "XMNotification"
  /// 自定义通知
  NotificationCenter.default.addObserver(self, selector: #selector(notificationAction), name: NSNotification.Name(rawValue: notificationName), object: nil)

2、设置监听方法

 /// 接受到通知后的方法回调
 @objc private func notificationAction(noti: Notification) {
  /// 获取键盘的位置/高度/时间间隔...
  print(noti)
 }

3、在通知用完后及时销毁

 /// 析构函数.类似于OC的 dealloc
 deinit {
  /// 移除通知
  NotificationCenter.default.removeObserver(self)
 }

4、发送通知

 /// 发送简单数据
 NotificationCenter.default.post(name: NSNotification.Name.init(rawValue: "XMNotification"), object: "Hello 2017")

 /// 发送额外数据
 let info = ["name":"Eric","age":21] as [String : Any]
 NotificationCenter.default.post(name: NSNotification.Name.init(rawValue: "XMNotification"), object: "GoodBye 2016", userInfo: info)

通知在系统中的运用,监听键盘的变动

  /// 通知中心监听键盘的变化
  #selector(notificationAction), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)

有关键盘的其他通知名称

  public static let UIKeyboardWillShow: NSNotification.Name
  /// 键盘显示完毕
  public static let UIKeyboardDidShow: NSNotification.Name
  /// 键盘将要隐藏
  public static let UIKeyboardWillHide: NSNotification.Name
  /// 键盘隐藏完毕
  public static let UIKeyboardDidHide: NSNotification.Name
  /// 键盘将要改变自身的frame
  public static let UIKeyboardWillChangeFrame: NSNotification.Name
  /// 键盘frame改变完成
  public static let UIKeyboardDidChangeFrame: NSNotification.Name

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Swift中通知中心(NotificationCenter)的使用示例

    前言 本文主要介绍了关于Swift通知中心(NotificationCenter)使用的相关内容,NotificationCenter是Swift中一个调度消息通知的类,采用单例模式设计,实现传值.回调等作用. 通知的作用还是挺强大的,对于两个不相关的控制器之间,要进行信息的传递,使用通知是个不错的选择,下面话不多说了,来一起看看详细的使用方法吧. 1.添加通知 /// 通知名 let notificationName = "XMNotification" /// 自定义通知 Noti

  • swift中利用runtime交换方法的实现示例

    前言 Runtime介绍 学习一个东西至少要先知道它是个啥,你一定听说过"运行时是 Objective-C 的一个特色",这里的"运行时"就是指 runtime 了. 老的方式initialize现在已经不适用了,需要用新的方式代替. 思路: 定义一个启动的协议,在app完成启动的方法里把需要做method swizzle的类跑一边协议的方法 第一种 1.Step One protocol SelfAware: class { static func awake()

  • 本地推送通知UserNotifications在Swift中的实现方式

    简介 消息推送相信在很多人的眼里都不陌生了吧?像即时聊天微信,好友发信息给你时会在顶部弹下小窗口提醒你.也像是在影院APP预订了电影票,在开场前一小时你也会收到提醒.这类推送是需要经过后端发送请求的,需要服务器发送推送请求,又或者使用如极光推送等第三方渠道. 那么如果我们的APP不需要连网呢?这是不是就不能使用消息推送了?不是的,苹果还提供给我们本地消息通知服务,即便APP不连网也能使用,功能也很强大可靠.本地时钟的应用场景很广泛,例如手机上的时钟.日历等. 那么你知道如何去实现它吗?这篇文章将

  • Swift中转义闭包示例详解

    目录 前言 转义与非转义闭包 逃离方法 将转义关闭付诸行动 注意强参考周期 内存泄漏背后的原因 消除强引用循环 概括 前言 Swift 是一种非常强大的编程语言,是为 Apple 生态系统开发应用程序的首选:iOS.macOS.watchOS 和 tvOS.作为使用 Swift 编写代码的开发人员,我们经常使用闭包:语言的一个重要而重要的章节. 闭包不是初学者开始的主题.然而,这是每个人都必须尽快了解的东西.有很多方面需要了解并了解它们的工作原理.在所有这些中,有一个特定的:转义闭包和@esca

  • Swift 中的 JSON 反序列化示例详解

    目录 业界常用的几种方案 手动解码方案,如 Unbox(DEPRECATED) 阿里开源的 HandyJSON 基于 Sourcery 的元编程方案 Swift build-in API Codable 属性装饰器,如 BetterCodable 各个方案优缺点对比 Codable 介绍 原理浅析 Decoder.Container 协议 自研方案 功能设计 Decoder.Container 具体实现 再议 PropertyWrapper 应用场景示例 单元测试 性能对比 业界常用的几种方案

  • Swift中的高阶函数功能作用示例详解

    目录 高阶函数的作用 1. 简化代码 2. 提高可读性 3. 支持函数式编程 4. 提高代码的可重用性 常见的高阶函数 1. map() 2. filter() 3. reduce() 4. sorted() 5. forEach() 6. compactMap() 7. flatMap() 8. zip() 9. first() 10. contains() 高阶函数的作用 Swift中的高阶函数是指那些参数或返回值是函数的函数.它们的存在使得我们可以用非常简洁和优雅的代码来解决许多问题. 1

  • swift中可选值?和!使用的方法示例

    Optional 可选值 Optional是 Swift 的一大特色,也是 Swift 初学者最容易困惑的问题. 定义变量时,如果指定该变量是可选的,表示该变量可以有一个指定类型的值,也可以是 nil. 此外,Swift的nil也和Objective-C有些不一样,在Objective-C中,只有对象才能为nil,而在Swift里,当基础类型(整形.浮点.布尔等)没有值时,也是nil,而不是一个初始值,没有初始值的值,是不能使用的,这就产生了Optional类型.定义一个Optional的值很容

  • swift中的@UIApplicationMain示例详解

    前言 最近在学习swift,在学习中遇到了一些需要整理记录的知识点,下面本文主要介绍了关于swift中@UIApplicationMain的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 程序如何开始的 C 系列语言中,程序的入口都是 main 函数,一个 Objective-C 的 iOS app 项目在新建时,Xcode 会给我们创建好一个 main.m 的文件. #import <UIKit/UIKit.h> #import "AppDelegate

  • swift中的正则表达式小结

    作为一门先进的编程语言,Swift 可以说吸收了众多其他先进语言的优点,但是有一点却是让人略微失望的,就是 Swift 至今为止并没有在语言层面上支持正则表达式. 正则表达式的用处: 判断给定的字符串是否符合某一种规则(专门用于操作字符串) - 电话号码,电子邮箱,URL... - 可以直接百度别人写好的正则 - 别人真的写好了,而且测试过了,我们可以直接用 - 要写出没有漏洞正则判断,需要大量的测试,通常最终结果非常负责 过滤筛选字符串,网络爬虫 替换文字,QQ聊天,图文混排 语法规则 使用过

  • Swift中的条件判断、循环、跳转语句基础学习笔记

    一.引言 一种编程语言的强大与否,很大程度上取决于其提供的程序流程控制方案,就如使用汇编语言实现复杂的程序流程是一件痛苦的事情.Swift中提供了许多强大的流程控制语句,例如快速遍历for-in,while循环,repeat-while循环,switch选择等,需要注意的是,在Swift2.2中,for(a;b;c)循环已经被弃用掉,并且Swift中的Switch语句也更加强大,可以处理任意数据类型. 二.for-in循环 配合范围运算符,for-in循环可以用来执行确定次数的循环,示例如下:

随机推荐