bind:toObject:withKeyPath:options: 是单向绑定吗?

2023-11-26

我有两个窗口:窗口A是从NIB加载的;窗口 B 是通过编程创建的。

两个窗口都有一个NStextView:窗口A中textview的attributedString绑定到属性text一个模型的using IB;而窗口B中textview的attributedString绑定到text模型的属性使用-[NSObject bind:toObject:withKeyPath:options:] method.

[textview bind:@"attributedString"
      toObject:obj
   withKeyPath:@"text"
       options:nil];

这是奇怪的事情:窗口 B 中的 textview 确实绑定到obj.text,但是文本视图中的更改永远不会更新为obj.text。但是,如果我在窗口 A 的文本视图中进行更改,obj.text窗口 B 中的文本视图也会相应更新。

所以我在想,-[NSObject bind:toObject:withKeyPath:options:]方法仅适用于单向绑定。我在 Cocoa 文档中找不到明确的解释。有人有解决这个问题的经验吗?如何在代码中实现双向绑定?


Cocoa 绑定本质上是双向的,但某些行为(例如文本字段的连续/实时更新)需要设置特定选项。在 IB 中,您需要确保选中“连续更新值”复选框。要以编程方式获得等效行为,您需要指定options装订上。这可能看起来像这样:

[textview bind: NSAttributedStringBinding 
      toObject: obj 
   withKeyPath: @"text" 
       options: (@{ 
                 NSContinuouslyUpdatesValueBindingOption : @YES })];

值得一提的是,当以编程方式设置绑定时,值得检查 IB 中的等效绑定并确保将所有相同的设置传递给编程绑定。例如,我在 IB 中看到,对于 NSTextView 的属性字符串绑定,默认情况下都会选中“允许编辑多个值选择”、“有条件设置可编辑”和“针对不适用的键引发”选项。这意味着我们的程序化绑定可能应该really看起来像:

[textview bind: NSAttributedStringBinding 
      toObject: obj 
   withKeyPath: @"text" 
       options: (@{ 
                 NSContinuouslyUpdatesValueBindingOption : @YES,
                 NSAllowsEditingMultipleValuesSelectionBindingOption : @YES,
                 NSConditionallySetsEditableBindingOption : @YES,
                 NSRaisesForNotApplicableKeysBindingOption : @YES })];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bind:toObject:withKeyPath:options: 是单向绑定吗? 的相关文章

  • 获取选定行 NSTableView 的值

    我如何获取 NSTableView 中选定行的值 通过使用selectedRow see here https developer apple com documentation appkit nstableview 1535010 sel
  • 如何将子属性的触发器设置为父属性?

    我有一个带有 ToggleButton ExpanderButton 的 TreeView 切换按钮有两个图像 一张用于展开 另一张用于未展开 但是 当我选择 TreeViewItem 时 我用不同的颜色突出显示它 并且我也想更改图像的颜色
  • 如何设置 NSButton OSX 的背景颜色

    我想设置 NSButton 的背景颜色 属性检查器中没有任何内容 所以我想知道是否有任何方法可以以编程方式完成此操作 系统控件需要遵循 Apple 的外观和感觉 因此您无法轻松更改背景颜色 如果你想完成这个 你需要子类化 NSButton
  • wpf 控件宽度绑定

    我有两个带有内容的边框 第二个边框宽度根据情况而变化 在内容上 我试图将第一个边框绑定到第二个边框宽度 但是 它不起作用 我不确定我错过了什么 有人可以给我一些指导吗 下面是我目前正在尝试的示例
  • Cocoa webview UserAgent“webkit-legacy”问题

    我解决了这个问题 请看下面所选的答案 我一直在努力寻找导致 OSX Cocoa 应用程序的 WebView 与 Safari 表现不同的原因 事实证明 用户代理是不同的 有点明显 并且我正在访问的网站不知道如何处理它 令人惊讶的是 它是ht
  • 如何构建 Objective-C 静态库? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些 Objective C 类 目前在 Cocoa 应用程序 Mac OS X 和 Cocoa Touch 应用程序 iOS 中
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • R:行数不相等的列绑定

    我有两个数据集 它们每个都有变量 ID Block 和 RT 反应时间 我想合并 列绑定这两个集合 以便我拥有一个包含变量的数据集 ID 块 RT1 RT2 问题是两个集合中的行数不相等 此外 ID 和块号匹配也很重要 缺失值应替换为 NA
  • Objective-C 语法是什么,椭圆式点表示法? “……”

    我在 Joe Hewitt 的 Three20 源代码中注意到了这一点 而且我以前从未在 Objective C 中见过这种特殊的语法 甚至不知道如何在适当的谷歌搜索中引用它 来自 UITableViewDataSource TTSecti
  • 如何使用NSDecimalNumber?

    我正在构建一个需要对金钱进行计算的应用程序 我想知道如何正确使用 NSDecimalNumber 特别是如何从整数 浮点数和双精度数初始化它 我只发现它很容易使用 decimalNumberWithString 方法 这 initWith
  • 如何自定义 NSSlider

    我正在尝试在 Cocoa 中实现一个具有 5 个值的自定义滑块 查看我的演示项目 可以在此处下载 http s000 tinyupload com index php file id 07311576247413689572 http s0
  • 如何使用故事板更改wpf中网格行的高度

    我有一个Grid有 2 行
  • 获取 Cocoa 中文件的类型

    我成功找到了指定文件的扩展文件类型 JPEG 图像 TIFF 图像等 但我正在寻找更通用的东西 可以对 大类别 中的文件进行分类 如图像 moovies 文本文件等 有没有办法在可可 或 Objective C 中实现这一点 感谢您的帮助
  • Swift NSViewController 响应 mouseDown 事件,但不响应 keyDown 事件

    我正在尝试使用 Swift 和 Cocoa 创建一个适用于 OS X 的应用程序 我希望应用程序能够响应关键事件 而不将焦点放在文本字段上 中 我在 Xcode 中创建了一个带有故事板的新 Cocoa 项目 并将 ViewControlle
  • 表视图未根据绑定更新

    这是一个非常新手的问题 这是我以前做过很多次的事情 但这次我遗漏了一些东西 在我的 AppDelegate h 文件中 我声明一个 NSArray 并将其设置为属性 interface AppDelegate NSObject NSArra
  • 在 Swift 3 中以编程方式创建没有 XIB 的 NSViewController

    我正在尝试在不使用 Interface Builder 的情况下制作 macOS 应用程序 我的项目已构建并运行 但我的主视图控制器似乎没有加载其视图 那就是viewDidLoad 方法未被调用 我正在使用 Xcode beta 8 0 b
  • 以编程方式设置 Mac 鼠标/触控板速度

    我正在尝试更改我正在开发的应用程序的鼠标跟踪速度 注意 不是加速 我到处寻找一种方法来做到这一点 但找不到任何东西 我怀疑这与我在 IOKit hidsystem 框架上的这个函数中给出的值有关 IOHIDSetAccelerationWi
  • 在类型生成期间使用 jaxb 绑定替换 XmlType.namespace

    我的 Web 服务应用程序正在从 Axis 迁移到 JAX WS 但我在进行某些转换时遇到了问题 我的主要问题是 我有几个具有相同类型的 XSD 其定义略有不同 但名称相同 在 wsimport 期间 我可以使用外部 JAXB 绑定文件来解
  • 监控Mac网络流量

    我想知道如何监控 Mac 上的网络流量 就像活动监视器的方式一样 显示进出的字节 数据包 我知道这有点模糊 但我不确定最好的起点 编辑 我想用代码来完成此操作 而不是使用现有的软件 我刚刚找到了开源项目 菜单表 http www ragin
  • WPF DataGrid 绑定到 string.Length 而不是字符串文本

    我是 WPF 的新手 并且真诚地尝试自己尽可能多地弄清楚 我已经创建了第一个 DataGrid 控件 并且尝试使用如下字符串列表填充它

随机推荐

  • 如何对使用 jspdf 和 html2canvas 生成的文件进行 Base64 编码?

    我正在尝试对附加代码中生成的文档进行编码 但没有任何反应 不会生成错误 但也不会对文件进行编码 并且ajax request从未被执行过 正确的方法是什么 html2canvas document getElementById workAr
  • 使用“--without-heartbeat”标志运行的芹菜工作人员对应用程序的影响

    讨论here高层讨论了与 celery 工人一起运行的一些影响 without hearbeat without gossip without mingle flags 我想知道是否 without heartbeat标志会影响工作人员检测
  • Python Statsmodels Mixedlm(混合线性模型)随机效应

    我对 Statsmodels Mixedlm 的输出有点困惑 希望有人能解释一下 我有一个大的单户住宅数据集 包括每个房产的前两次销售价格 销售日期 我已经对整个数据集进行了地理编码 并获取了每个属性的海拔 我试图了解不同城市之间海拔与房价
  • Runtime.maxMemory() 和 -Xmx

    我期望 Runtime maxMemory 准确返回 Xmx 但它返回一个较低的值 那么它返回什么呢 Xmx 标志的解释取决于 VM 一些虚拟机 包括 HotSpot 对有效值施加下限 这个选项 CCC 提案不应提及 Xmx 标志 这样 参
  • 在 Windows 版 Safari 中启用调试菜单

    我在 Safari 3 中找到了很多关于此问题的信息 但在版本 4 中情况明显发生了变化 我只是碰巧通过实验偶然发现了答案 因此将其发布在这里供其他人使用 在 Windows 版 Safari 5 1 7 中进行检查 点击右上角Settin
  • 正确设置 3d 图中的轴限制[重复]

    这个问题在这里已经有答案了 我在 matplotlib 中为 3d 图设置限制时遇到问题 我发现无论我如何设置 x y 和 z 轴的限制 3dplots 的绘图例程都会添加额外的缓冲区 from mpl toolkits mplot3d i
  • 在linux上用什么来使python程序可执行

    我刚刚安装了一个linux系统 Kubuntu 想知道是否有一个程序可以使python程序在linux上可执行 只需将其放在脚本的第一行 usr bin env python 使文件可执行 chmod x myfile py 执行与 myf
  • 我是否应该在统一缓冲区或着色器存储缓冲区对象内使用“vec3”?

    The vec3type 是一个非常好的类型 它只占用3个浮点数 而我有只需要3个浮点数的数据 我想在 UBO 和 或 SSBO 的结构中使用一个 layout std140 uniform UBO vec4 data1 vec3 data
  • LDAP授权

    我开始使用 LDAP 为某些现有系统实现授权和身份验证机制 在开发阶段 我面临着一个艰难的设计决策 用户角色应该存储在哪里 如果我使用 RDBMS 看起来会有三个表 user role and 用户角色映射角色和用户 请建议可用的解决方案
  • 有条件地在数组中添加元素(...)

    我的系统将配置数组发送到如下函数 callThatFunction array k1 gt v1 k2 gt v2 kn vn 我想根据某些情况创建一个键值对 我可以在不为数组创建变量的情况下执行此操作 这会破坏其他人创建的干净配置语法 吗
  • 世博会:“此环境中不支持身份验证/操作”

    我开发了一个react native expo 移动应用程序并尝试使用google帐户登录firebase 但出现错误 auth operation not supported in this enviroment 此应用程序运行的环境不支
  • 让源映射与评估的代码一起使用

    我有一个构建脚本 它通过 uglifyjs 运行我的所有代码 执行一系列奇特的缓存操作 并最终运行eval code 在一些 JavaScript 文件上 我正在尝试启动并运行整个过程源地图 但只要我使用 我似乎就无法让它工作eval 如果
  • AVSampleBufferDisplayLayer 如何显示 H.264

    我想分享我几天来学到的知识 没有太多可找到的 我仍然对声音感到困惑 欢迎提出意见和建议 这是我的代码片段 声明一下 property nonatomic retain AVSampleBufferDisplayLayer videoLaye
  • Html5 占位符与 .NET MVC 3 Razor 编辑器用于扩展?

    有没有办法写Html5 占位符使用 Html EditorFor 或者我应该只使用 TextBoxFor 扩展 即 Html TextBoxFor model gt model Title new placeholder Enter tit
  • 在 PowerShell 中对非常大的文本文件进行排序

    我有标准的 Apache 日志文件 大小在 500Mb 到 2GB 之间 我需要对其中的行进行排序 每行以日期 yyyy MM dd hh mm ss 开头 因此无需进行排序处理 我想到的最简单 最明显的事情是 Get Content un
  • 在数据框上滚动函数

    我有以下数据框C gt gt gt C a b c 2011 01 01 0 0 NaN 2011 01 02 41 12 NaN 2011 01 03 82 24 NaN 2011 01 04 123 36 NaN 2011 01 05
  • C++ 双地址运算符? (&&)

    我正在阅读STL源代码 但我不知道什么 地址运算符应该做的 这是来自的代码示例stl vector h vector operator vector x lt Note double ampersands here NB DR 675 th
  • 在应用程序关闭/退出时停止所有已启动的服务

    当用户点击主页按钮时是否可以停止所有启动的服务 I use startService new Intent ClassName this ClassName2 class stopService new Intent ClassName t
  • opencv:两个3D点云之间的刚性变换

    我有两个 3D 点云 我想使用 opencv 来查找刚性变换矩阵 平移 旋转 所有 3 个轴之间的恒定缩放 我找到了一个估计刚性变换函数 但显然它仅适用于 2D 点 另外 我还发现估计仿射3D 但似乎不支持刚性变换模式 我需要编写自己的刚性
  • bind:toObject:withKeyPath:options: 是单向绑定吗?

    我有两个窗口 窗口A是从NIB加载的 窗口 B 是通过编程创建的 两个窗口都有一个NStextView 窗口A中textview的attributedString绑定到属性text一个模型的using IB 而窗口B中textview的at