另一个视图控制器中属性的内联 KVO

2023-12-03

我有一个带有动态变量“值”的 vc,我需要知道它何时在调用 cv 的闭包中发生更改。

目标VC:

@objc dynamic var value: String = ""

source:

if let vc: TagButtonPopupViewController = sb.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier("TagPopupViewController")) as? TagButtonPopupViewController {
        // configure vc
        vc.value = sender.title

        // observe
        _ = vc.observe(\.value) { (tbvc, change) in
            print("new string")
        }

        // present popup
        presentViewController(vc, asPopoverRelativeTo: sender.bounds, of: sender, preferredEdge: NSRectEdge.maxY, behavior: NSPopover.Behavior.transient)
    }

但“观察”从未被调用。 有什么想法如何在 Swift4 中的“值”发生变化时在闭包中收到通知吗?


观察者因没有引用而被销毁 在另一个视图控制器呈现之后才返回它。 你必须储存它

observer = vc.observe(\.value) { ... }

where observer是调用视图控制器的属性。

一个独立的命令行项目示例:这将按预期打印“新字符串”:

class A: NSObject {
    @objc dynamic var value: String = ""
}

let a = A()
let observer = a.observe(\.value) { (_, _) in print("new string") } // (*)
a.value = "Hello world"

但如果(*)被替换为

_ = a.observe(\.value) { (_, _) in print("new string") }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

另一个视图控制器中属性的内联 KVO 的相关文章

随机推荐

  • 我可以在同一个 docker 引擎主机中混合基于 Linux 和基于 Windows 的容器吗?

    我在用着适用于 Windows 的 Docker 桌面随着Windows容器的新功能 现在基于Windows的容器成为可能 但它提出了这个问题 我可以混合吗基于Linux的 and 基于窗口的同一 docker 引擎主机中的图像 如果是 所
  • 创建一个依赖于当前时间的 mongo 视图

    我有一个包含日期字段的集合 我想创建一个 mongo 视图 按当前日期过滤所有文档 例如 我希望我的视图包含过去 7 天的所有文档 我有一个 javascript 脚本 可以使用聚合管道创建视图 我使用javascript方法 new Da
  • 无法通过socket连接到本地MySQL服务器

    我收到以下错误 错误 无法连接到本地 MySQL 服务器通过套接字 var lib mysql mysql sock 2 如何恢复 mysql sock 文件 Edit 我正在尝试从 ROR 应用程序连接到 mysql 数据库 直到昨天为止
  • 在 Rprofile.site 中使用 .libPaths 更改 R 默认库路径失败

    我在 Windows 上运行 R 而不是以管理员身份运行 当我安装软件包时 以下命令不起作用 gt install packages zoo Installing package s into C Program Files R R 2 1
  • 如何确定 USB 端口的速度?

    有没有一种简单的方法可以通过编程确定 USB 端口的速度 或版本 我希望根据 USB 端口的最大带宽来控制发送到 USB 端口的数据的速度 如果您需要 Windows 解决方案 这应该是一个好的开始 http msdn microsoft
  • Python 中的 10 个字符字符串集在 RAM 中的大小是预期的 10 倍 [重复]

    这个问题在这里已经有答案了 也可以看看 Python 中数百万字符串列表的内存使用情况和副本 我正在创建一个Pythonset在RAM中包含1000万个10个字符的字符串 每个字符可以在0 255内表示 不会比这更复杂 没有UTF8非ASC
  • 构建 Swing UI 来实现方法编辑器

    我正在构建一个方法编辑器 一个方法 MethodModel类 通常具有以下元素 List
  • 如何仅使用线段的部分长度找到放置在形成线段的两个点之间的点?

    给定 2 个点 A x0 y0 z0 和 C x2 y2 z2 形成长度为 k 的线段 找到位于 k 处的点 C x1 y1 z1 的方程是什么距 A 1 英寸 这是基础数学 如果您已经有处理向量和点的类 您应该能够执行以下操作 Vecto
  • rm(list = ls()) 在函数内不起作用。为什么? [复制]

    这个问题在这里已经有答案了 我正在尝试创建一个函数 该函数将同时清除工作区和内存 这样我就可以只键入一个函数 而不必键入 rm list ls gc 但是 rm list ls 当从函数内部调用时不起作用 为什么 有没有办法解决 gt Le
  • 从控件中删除 ReactiveCocoa 信号

    如果我将信号分配给控件的属性 RAC self loginButton enabled RACSignal combineLatest self usernameTextField rac textSignal self passwordT
  • 在 iOS 中声明实例变量 - Objective-C

    好吧 这些天我读了很多关于这个话题的文章 但我总是感到困惑 因为我每次搜索的答案都不同 我需要知道在 iOS 中声明实例变量的最佳方法 到目前为止 我知道我应该只在 m 文件中声明它们并保持 h 干净 但我做不到 编译器给我编译错误 这里只
  • Math.Tan 不起作用

    我目前正在为 Windows Phone 编写一个计算程序 其中一项计算是查找用户输入的数字乘以用户输入的另一个数字的正切值 问题是当我输入 1 tan 45 即 1 时 它返回 1 6 我通过调试器运行了几次 我可以看到 Math Tan
  • 使用 Jsoup 从 html 文件中提取标签

    我正在对网络文档进行结构分析 为此 我只需要提取网络文档的结构 仅标签 我找到了一个名为 Jsoup 的 java html 解析器 但我不知道如何用它来提取标签 Example this is head this is body Outp
  • django根据模型属性自动填充一些数据

    我正在研究一个概念 我想在保存模型时捕获某些信息 为了了解完整情况 我有一个具有以下模型的应用程序核心 核心 模型 py from django db import models from django contrib auth model
  • 将新元素添加到映射后出现“不是‘map-get’的映射”错误

    如何将映射合并到 sass 中的现有映射中 我目前正在使用 sass 地图 config部分来定义我的断点 例如 breakpoints small 35rem medium 55rem large 75rem xlarge 90rem e
  • @EJB 注释与 JNDI 查找

    是否存在使用 JNDI 比使用注入无状态会话 bean 更好的情况 EJB注解 我们将 JSF 1 2 与 Sun Application Server 9 0 01 结合使用 我们的团队正在讨论在托管 Bean 中使用 SLSB 时哪种方
  • 如何防止长按 EditText Widget 时显示虚拟键盘?

    我的应用程序中有一个 EditText 小部件 我已将其设置为只读 我想知道用户何时长按它 如果用户点击此小部件 我不希望弹出虚拟键盘 为了阻止虚拟键盘出现 我使用这个 EditText 文本 EditText findViewById R
  • 插入数据并获取返回的 id 后如何修复 DapperExtensions 错误

    I use 简洁的扩展将数据拉取和推送到数据库 I use unsigned intid 作为我的主键database并在class以及 我的课看起来像这样 public class Product Column id public uin
  • CodePipeline 的 Cloudformation 模板

    我们有一个 aws 设置 其中有一个测试帐户和一个生产帐户 我们的代码提交 java lambda 位于我们的测试帐户中 我们希望使用 CodePipeline 将代码从此处部署到我们的测试帐户和生产帐户 我想知道是否有人知道任何可以执行此
  • 另一个视图控制器中属性的内联 KVO

    我有一个带有动态变量 值 的 vc 我需要知道它何时在调用 cv 的闭包中发生更改 目标VC objc dynamic var value String source if let vc TagButtonPopupViewControll