2011-12-19 52 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