我有一个NSPopupButton其内容被绑定到一个NSArray,假设阵列是独立NSPopUpButton内容而使用绑定
@[
@"Option 1",
@"Option 2"
];
及其选定对象绑定到用户默认值控制器,并且被写入到一个用户默认系统的首选文件。
在我的代码中,我检查首选项是否设置为@"Option 1"
,并相应地执行操作。
这一切都运行良好(虽然我确实感到有点不安,检查什么是UI的价值,但无论...),直到我需要本地化。
因为值是标签,所以我遇到问题。
如果我的用户在法国,他的偏好文件将会说@"L’option 1"
,这不等于@"Option 1"
。我需要从意义上抽象出演示文稿,这非常困难。
我把绑定分成两个数组,我们称它们为values
和labels
。
比方说,就像这样:
values = @[
@"option_1",
@"option_2"
];
labels = @[
NSLocalizedString(@"Option 1", nil),
NSLocalizedString(@"Option 2", nil)
];
我绑定的NSPopUpButton
的Content
结合values
及其Content Values
结合labels
。但是,弹出列表显示option_1
和option_2
,它似乎不想使用labels
数组标记弹出式按钮中的项目。
如何让NSPopUpButton
在内部使用values
并将其存储在首选项文件中,但是会向用户显示labels
?
如果您能想出更好的解决方案,则无需采用这种方式进行架构设计。关键是我想存储并检查一个值,并将该值与适当地本地化的标签相关联。
谢谢。这并没有完全起作用,它确实使用正确的本地化值替换了字符串,但它将转换后的本地化字符串写入了首选项文件,所以我在这方面回到了原点。我可以启用反向转换并对NSLocalizedString执行反向查找,但似乎并不完全确定。 – magiclantern
在这种情况下,将用户默认值存储在代码中而不是使用绑定可能会更方便。 – vadian