2011-12-19 53 views
1

我创建Constants.hConstants.m的建议在这里:如何使用常量字符串变量在Interface Builder

Constants in Objective-C

现在我也想用在Interface Builder中Constants.h定义了一些字符串,例如设置文本的标签。

如何使用绑定来做到这一点?我想我应该以某种方式使用ObjectController(模式:类,类名称:常量)?但是这个控制器的内容对象是什么(因为我没有任何类型的常量变量)?也许在Constants.m使用Singleton?有什么建议么?

回答

2

我不认为你可以以任何方式绑定字符串。

我建议在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类应该帮助你本地化。

+0

谢谢你的回答。你认为什么是更好的方法?使用常量作为存储在.strings文件中的字符串的键?任何其他想法不以编程方式设置字符串? – Tobold 2011-12-19 10:09:13

+0

答复已更新。简而言之,如果你只有一种语言,忘记常量并把所有东西都放到一个xib中。如果你正在考虑i18n,请阅读扩展答案。 – Sulthan 2011-12-19 12:40:34