Swift 中的 NSNotificationCenter addObserver

2023-11-30

如何在 Swift 中将观察者添加到默认通知中心?我正在尝试移植这行代码,该代码行在电池电量变化时发送通知。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:nil];

斯威夫特 4.0 和 Xcode 9.0+:

发送(邮寄)通知:

NotificationCenter.default.post(name: Notification.Name("NotificationIdentifier"), object: nil)

OR

NotificationCenter.default.post(name: Notification.Name("NotificationIdentifier"), object: nil, userInfo: ["Renish":"Dadhaniya"])

接收(获取)通知:

NotificationCenter.default.addObserver(self, selector: #selector(self.methodOfReceivedNotification(notification:)), name: Notification.Name("NotificationIdentifier"), object: nil)

收到通知的函数方法处理程序:

@objc func methodOfReceivedNotification(notification: Notification) {}

斯威夫特 3.0 和 Xcode 8.0+:

发送(邮寄)通知:

NotificationCenter.default.post(name: Notification.Name("NotificationIdentifier"), object: nil)

接收(获取)通知:

NotificationCenter.default.addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification(notification:)), name: Notification.Name("NotificationIdentifier"), object: nil)

接收通知的方法处理程序:

func methodOfReceivedNotification(notification: Notification) {
  // Take Action on Notification
}

删除通知:

deinit {
  NotificationCenter.default.removeObserver(self, name: Notification.Name("NotificationIdentifier"), object: nil)
}

斯威夫特 2.3 和 Xcode 7:

发送(邮寄)通知

NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: nil)

接收(获取)通知

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification(_:)), name:"NotificationIdentifier", object: nil)

接收通知的方法处理程序

func methodOfReceivedNotification(notification: NSNotification){
  // Take Action on Notification
}


对于历史 Xcode 版本...



发送(邮寄)通知

NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: nil)

接收(获取)通知

NSNotificationCenter.defaultCenter().addObserver(self, selector: "methodOfReceivedNotification:", name:"NotificationIdentifier", object: nil)

删除通知

NSNotificationCenter.defaultCenter().removeObserver(self, name: "NotificationIdentifier", object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self) // Remove from all notifications being observed

接收通知的方法处理程序

func methodOfReceivedNotification(notification: NSNotification) {
  // Take Action on Notification
}

使用@objc注释类或目标方法

@objc private func methodOfReceivedNotification(notification: NSNotification) {
  // Take Action on Notification
}

// Or

dynamic private func methodOfReceivedNotification(notification: NSNotification) {
  // Take Action on Notification
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 中的 NSNotificationCenter addObserver 的相关文章

  • 使用 firebase 过滤分页列表

    我正在尝试使用 firebase 和 swift 制作一个分页过滤列表 但请随意用您最喜欢的编程语言回答 而不过滤客户端上检索到的数据 假设我有这个结构 matches match 1 name Match 1 users user 1 o
  • iOS 5 UIView drawRect 覆盖在设备上不起作用

    我正在准备在 iOS 5 GM 上发布我的 iPhone 应用程序 并遇到了 UIView 的错误 当我在子类上重写 drawRect 方法时 模拟器会显示所需的结果 但当我尝试在实际设备上测试时 drawRect 重写根本没有任何效果 我
  • iOS 上 Safari 中的 shift 键

    有没有办法在javascript中判断手机键盘上是否按下了shift键 并将其与大写锁定 按两次shift键 区分开来 一些事实 首先 让我们看一下有关 iOS 键盘的一些事实 我假设您已经知道了 当您进入键盘模式时 shift键始终处于激
  • Swift:如何让游戏中的角色只有落地后才能跳跃?

    我正在开发一款游戏 我的角色可以从一个陆地跳到另一个陆地 我已经把所有事情都做好了 除了我剩下的问题是 如果你继续点击屏幕 他可以永远跳跃 我希望他必须先落地才能再次跳跃 import SpriteKit import GameplayKi
  • 在 iOS 7 中查看 Core Data 创建的 sqlite 文件时出现问题

    当我尝试访问由核心数据创建的数据库文件时遇到问题 DB 文件位于 Documents 文件夹中 我已将其复制到桌面并使用 Firefox 插件打开它 Hello sqlite文件不包含任何行我有使用核心数据插入值 我正在使用 iOS 7 模
  • iOS 确定视频中的帧数

    如果我有一个 Swift 中的 MPMoviePlayerController MPMoviePlayerController mp MPMoviePlayerController contentURL url 有没有办法获取视频中的帧数u
  • 更改目录时 Gitlab CI 运行程序作业失败退出状态 1

    我正在使用我的个人机器作为使用 Fastlane 的 iOS 项目的运行程序 这主要是因为共享运行器没有为 iOS 设置 因为它们没有安装 Xcode 更改目录时我的作业立即失败 它是一个 shell 运行程序 根本没有其他自定义配置 有什
  • Swift:Tableview 在导航栏下方滚动但在状态栏上方滚动?

    我使用以下技巧隐藏了导航栏的阴影 self navigationController navigationBar setBackgroundImage UIImage for default self navigationControlle
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • 上下文菜单未在 SwiftUI 中更新

    我正在尝试设置 SwiftUI contextMenu带有一个切换按钮Bool价值 上下文菜单的按钮文本应该在以下情况下更改 Bool切换 但上下文菜单不会更新 有没有办法强制更新上下文菜单 描述问题的示例代码 import SwiftUI
  • Swift 中计算只读属性与函数

    在 Swift WWDC 简介会话中 只读属性description被证明 class Vehicle var numberOfWheels 0 var description String return numberOfWheels wh
  • iOS - 在相机上放置自定义叠加层(垂直对齐)。顶部黑条的大小

    我正在寻找以下问题的编程解决方案 我想在相机 iOS 上绘制自定义叠加层 我希望它位于相机输出视图的垂直中央 我已经完成了相对于屏幕而不是相机图片居中绘制自定义视图 为此 我需要获得顶部黑条的大小 我怎么才能得到它 顶部和底部栏的大小不相等
  • 依赖于不同队列上的另一个操作的 NSOperation 无法启动

    我有操作的依赖图 并且使用多个队列来组织各种操作流 例如 peopleQueue sitesQueue sessionQueue sessionQueue loginOp fetchUpdatedAccountOp peopleQueue
  • SDK 和 iOS 部署目标。

    我使用最新的 SDK 4 1 构建项目并设置 iOS 部署目标 3 0 如果我使用4 0 sdk的某些方法 我可以在真正的iPhone 3 0上运行我的项目吗 您只能在 OS 3 设备上运行您的项目 如果有条件地编码围绕您想要使用的 OS
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • iOS 有 INTERNET 权限吗?

    我在 iOS 设备上的 flutter dio 包上遇到了一个奇怪的问题 我编写了一个向 url 发送 GET 请求的应用程序 Android 上一切正常 但 iOS 上的请求似乎无法通过 没有发生任何错误 什么也没有 我在 Android
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • 获取所有ios应用程序的全局列表[重复]

    这个问题在这里已经有答案了 我想对苹果应用商店进行一些全球统计 一个瓶颈是至少获取所有当前活动应用程序的 ID 这 9 位数字 有谁知道如何获取 iOS 应用商店中当前活动应用程序的所有 id 的完整列表 更好的是特定类别的所有 ID 例如
  • 如何安全地重命名 iOS 分发配置文件?

    我几个小时前刚刚提交了我的第一个应用程序 现在处于 等待审核 状态 但我犯了一个错误 我已经命名了我的分配配置文件My Company Distribution Profile 我应该做的事情被命名为我的发行版配置文件My GAME Dis
  • 带有自定义字体的 UILabel 错误呈现

    在我的 iPhone 应用程序中 我为所有 UILabel 设置了自定义字体 更准确地说 我对 UILabel 进行了子类化 重写了一个方法 在该方法中设置了自定义字体 然后将 IB 中的所有标签设置为该自定义类 现在的问题是 所有文本都渲

随机推荐

  • 如何在kivy python中使用滚动条

    谁能告诉我如何在这段代码中使用滚动条 其次 是否有任何方法可以对齐标签和 TextInput 以便无论有多少输入 TextInput 内的文本都将清晰可见 这里的对齐意味着 如果有数百个 数百或数千 个 TextInput 则 TextIn
  • 使用 OperationContextScope 设置标头时,IClientMessageInspector BeforeSendRequest 方法不起作用

    I have a client code implementation to consume a service with IEndpointBehavior to track request and response data 一切工作正
  • C#中如何获取数据类型的范围?

    如何获取 c Sharp net 中的数据类型范围 例如 如果我想获取 uint 数据类型的范围 如何通过代码获取它 请参阅此示例参考 gt UInt64 MinValue 字段 表示 UInt64 的最小可能值 该字段是恒定的 MSDN
  • 捆绑安装期间 Heroku 部署失败

    当将我的应用程序 Rails3 推送到 Heroku 时 它被拒绝 运行 bundle install withoutdevelopment test pathvendor bundle binstubsvendor bundle bin
  • 如何从提交表单自定义数据全日历包

    我在 FullCalendar 上方添加了一个选择表单来选择用户并显示他的事件 问题是如何加载日历中选择的用户的事件 这是一些代码 在 Calendar html twig 中 block javascripts parent
  • 如何使用 .c 文件而不是 .cpp 文件在 google test 中编写测试类?

    我已将 googletest 用于包含 c 文件的 Android NDK 项目 我使用了 cpp 类型的测试类来执行相同的操作 我想改用 c 文件 当我尝试使用它时出现以下错误 Running main from gtest main c
  • UIGraphicsBeginImageContext 与 CGBitmapContextCreate

    我正在尝试更改背景线程中图像的颜色 苹果文档说 UIGraphicsBeginImageContext 只能从主线程调用 我正在尝试使用 CGBitmapContextCreate 上下文 CGBitmapContextCreate 位图数
  • 如何在Ubuntu上安装OpenAL SDK?

    我对 Linux 和 Linux 编程非常陌生 我正在尝试在 ubuntu 上安装 OpenAL SDK 我最好的猜测是我需要从 CVS 存储库下载 OpenAL 我找到了一个教程 http www edenwaith com produc
  • 在 FormCreate() 中我可以做什么,不可以做什么?

    我认为这一定是一个常见问题解答 但谷歌搜索并没有真正帮助 我可以做什么 和不可以做什么 FormCreate 我想知道表单的所有子控件是否都已完全创建并可供访问等 我问的原因是我偶然发现了一个旧项目 我的FormCreate 简单地包括 S
  • 使用 sed 仅更改连续重复的字母

    使用 sed 如何将字母 a 更改为 A 但前提是它重复出现为两个或多个连续字母 示例 来自 galaxy ear aardvak Haaaaaaaaa into galaxy ear AArdvak HAAAAAAAAA 您可以使用组来完
  • 计算 Pandas GroupBy 对象中日期的差异

    我有一个具有以下格式的 Pandas DataFrame In 0 df Out 0 col1 col2 date 0 1 1 2015 01 01 1 1 2 2015 01 09 2 1 3 2015 01 10 3 2 1 2015
  • 脚本和matlab命令窗口之间的区别

    我想知道在命令窗口中输入几行或让脚本执行它们之间有什么区别 在问题中逃离嵌套的 try catch 语句我有一个示例功能 我已将选定的代码放入脚本中 然后叫它 但是这样它就无法正常工作 另一方面 当我选择行并按 f9 它按预期工作 这些行是
  • 如何在ParaView中读取Ansys数据文件?

    有人知道如何将 Ansys 结构数据文件导出到 ParaView 吗 据了解ParaView有一个Ansys阅读器 但它不起作用 加载 inp 文件时总是会出现错误 是否有任何脚本可以将 inp 文件转换为 vtk Thanks 基于vid
  • 对范围对象使用 Range.Sort 时 Excel for Mac 崩溃

    我有一个 Excel 电子表格 单元格 A1 到 A8 中有 8 个随机数 然后我有两个按钮 每个按钮运行一个 VBA 子程序 Sub Button1 Click Sheets Sheet1 Range A1 A8 Sort key1 Sh
  • SQL日期查询中的VBA变量

    我正在尝试查询 SQL 数据库中日期在用户输入给出的日期之后的所有行 当我用 包围日期时 我遇到了各种错误 从 附近语法不正确 到 将表达式转换为算术溢出错误 我当前的代码如下所示 inputdate InputBox Please ent
  • 增加谷歌云虚拟机的配额

    最近 我试图通过向我的虚拟机添加 GPU 来获得 Google 云加速器的好处 因此请求增加配额 因此我发送了 8 个 GPU 的请求 并收到了以下电子邮件 注意我尝试了多次 那么任何人都可以解释到底发生了什么以及如何成功增加 提前致谢 此
  • 在服务器上所有数据库的所有表中搜索字符串

    编辑 这个问题被标记为重复 但事实并非如此 SO 上的其他答案显示了如何搜索单个数据库中的所有表 我需要搜索给定服务器上每个数据库中的所有表 我需要在服务器上的所有数据库的所有表中搜索搜索字符串 我的电子邮件地址散布在即将更改域名的表格中
  • 本地存储未定义

    我正在尝试在 javascript 中使用 localstorage 在执行之间保存数据 这是使用它的代码 const commando require discord js commando roasts localStorage get
  • 当我使用 NetBeans 6.8 和 Eclipse 运行此代码时,为什么输出有所不同?

    当我使用 Eclipse 和 NetBeans 6 8 运行以下代码时 我想查看计算机上可用的 COM 端口 在 Eclipse 中运行时 它返回所有可用的 COM 端口 但在 NetBeans 中运行时 它似乎找不到任何端口 public
  • Swift 中的 NSNotificationCenter addObserver

    如何在 Swift 中将观察者添加到默认通知中心 我正在尝试移植这行代码 该代码行在电池电量变化时发送通知 NSNotificationCenter defaultCenter addObserver self selector selec