我创建Constants.h
和Constants.m
的建议在这里:如何使用常量字符串变量在Interface Builder
现在我也想用在Interface Builder中Constants.h
定义了一些字符串,例如设置文本的标签。
如何使用绑定来做到这一点?我想我应该以某种方式使用ObjectController(模式:类,类名称:常量)?但是这个控制器的内容对象是什么(因为我没有任何类型的常量变量)?也许在Constants.m
使用Singleton?有什么建议么?
我创建Constants.h
和Constants.m
的建议在这里:如何使用常量字符串变量在Interface Builder
现在我也想用在Interface Builder中Constants.h
定义了一些字符串,例如设置文本的标签。
如何使用绑定来做到这一点?我想我应该以某种方式使用ObjectController(模式:类,类名称:常量)?但是这个控制器的内容对象是什么(因为我没有任何类型的常量变量)?也许在Constants.m
使用Singleton?有什么建议么?
我不认为你可以以任何方式绑定字符串。
我建议在viewDidLoad
的代码中做。
请注意,字符串常量对于UI中的文本不太好。
编辑:
Xibs有自己的定位系统,但我不认为这是非常好的。它基本上意味着为每种语言创建一个新的xib。如果你只支持一种语言,只要把你的字符串放入xib中,问题就解决了。
注意:以下是我目前的项目的一个想法,我还没有实现它,但我想它会让我们轻松添加新的语言翻译。
我对更好的xib本地化的想法是为每个本地化组件(例如myButton1,myTextField1)定义IBOutlet,然后用本地化字符串(xml,properties,plist)编写一个文件,其中每个字符串都由IBOutlet名称如:
myXib1.myButton1.selected.title = This is a button. myXib1.myTextField1.placeholder = "This is text field placeholder"
然后,你必须写这需要的厦门国际银行的名字,发现当前的语言,并通过给定的厦门国际银行的所有字符串属性去的方法。它可以使用[NSObject performSelector:]
访问IBOutlet中干将:
id localizableView = [self performSelector:NSSelectorFromString(@"myButton1")];
,你从viewDidLoad
调用这个方法(或创建UILocalizedController类会自动调用它和所有的控制器将是它的后代)。
另外请注意,有NSLocalizedString
类应该帮助你本地化。
谢谢你的回答。你认为什么是更好的方法?使用常量作为存储在.strings文件中的字符串的键?任何其他想法不以编程方式设置字符串? – Tobold 2011-12-19 10:09:13
答复已更新。简而言之,如果你只有一种语言,忘记常量并把所有东西都放到一个xib中。如果你正在考虑i18n,请阅读扩展答案。 – Sulthan 2011-12-19 12:40:34