如何在Interface Builder中使用常量字符串变量

时间:2011-12-19 09:12:29

标签: objective-c interface-builder cocoa-bindings

我按照此处的建议创建了Constants.hConstants.m

Constants in Objective-C

现在我还想在Interface Builder中使用Constants.h中定义的一些字符串来设置标签的文本。

如何使用绑定执行此操作?我想我应该以某种方式使用ObjectController(模式:类,类名:常量)?但是这个控制器的内容对象是什么(因为我没有任何类型的常量变量)?也许在Constants.m中使用单身人士?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

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

我建议在viewDidLoad中的代码中执行此操作。

请注意,字符串常量对于UI中的文本来说并不是那么好。

编辑:

Xibs有自己的本地化系统,但我认为它不是很好。它基本上意味着为每种语言创建一个新的xib。如果您只支持一种语言,只需将字符串放入xib即可解决问题。

注意:以下是我当前项目的想法,我还没有实现它,但我想它可以让我们轻松添加新的语言翻译。

我对更好的xib本地化的想法是为每个可本地化的组件定义IBOutlet(例如myButton1,myTextField1),然后编写一个带有本地化字符串(xml,属性,plist等)的文件,其中每个字符串都由IBOutlet名称键入,例如:

   myXib1.myButton1.selected.title = This is a button.
   myXib1.myTextField1.placeholder = "This is text field placeholder"

然后,您必须编写一个方法,该方法获取xib名称,查找当前语言并查看给定xib的所有字符串属性。它可以使用[NSObject performSelector:]访问IBOutlet getters:

id localizableView = [self performSelector:NSSelectorFromString(@"myButton1")];

然后从viewDidLoad调用此方法(或者创建一个自动调用它的UILocalizedController类,所有控制器都是它的后代)。

另请注意,NSLocalizedString课程可以帮助您进行本地化。