Objective c 如何使用单个NSValueTransformer子类切换多个菜单项的标题
我想做一些绑定,根据文本字段中的单个数值在弹出菜单中切换项目标题。让我解释一下: 这是我的用户界面: 我希望我的菜单项根据文本字段中的数字自动调整为单数或复数。例如,当我在框中键入“1”时,我希望菜单项标记为“分钟”、“小时”和“天”。当我输入“4”时,我希望菜单项标记为“分钟”、“小时”和“天” 我到目前为止做了什么:Objective c 如何使用单个NSValueTransformer子类切换多个菜单项的标题,objective-c,cocoa,interface-builder,cocoa-bindings,Objective C,Cocoa,Interface Builder,Cocoa Bindings,我想做一些绑定,根据文本字段中的单个数值在弹出菜单中切换项目标题。让我解释一下: 这是我的用户界面: 我希望我的菜单项根据文本字段中的数字自动调整为单数或复数。例如,当我在框中键入“1”时,我希望菜单项标记为“分钟”、“小时”和“天”。当我输入“4”时,我希望菜单项标记为“分钟”、“小时”和“天” 我到目前为止做了什么: 我将三个菜单项的标签绑定到与文本字段值相同的键路径 我创建了一个NSValueTransformer子类来解释文本字段中的值,并返回单数或复数作为项目标题 我将此值转换器应
我错过了什么吗?什么是理想的解决方案?好的,这可能不是理想的解决方案,但您可以考虑:如果您从代码(而不是在IB中)设置值转换器,您可以实例化同一类的3个不同的转换器。您可以给您的值转换器一个ivar
NSString*单位
(并添加类似于[[MyValueTransformer alloc]initWithUnit:
)的内容,以允许每个值转换器返回自己的字符串,但您仍然只需编写一次值转换器的代码
(也就是说,如果你要考虑让你的应用程序本地化,只需加上一个“S”来创建复数就不起作用了。当然,你可以添加IVARS,用于<代码> NScord*MultUng/Cuff>和<代码> NScord*复数< /代码>。
等等,我刚刚意识到你可以注册值转换器!如果将它们注册为
MyValueTransformerHours
和MyValueTransformerMinutes
(通过在代码中手动alloc
ating和init
序列化它们),则可以从Interface Builder使用它们。另请参见。太棒了!你的编辑正是我需要的。这不是一个无代码的解决方案,但它非常接近。谢谢