我正在与国家制作应用程序并且它是旗帜。现在我有一个问题。我有从1到200命名的标志。以及数字的所有名称。 (例如,1是澳大利亚,2是美国)。我使用随机在UIImageView
中显示标志。之后我有4个按钮,这些按钮从标志名称变成了他们的名字。
最后的所有代码。
我有一个数组,我存储图像的名称。
问题:如何用名字替换国家/地区? 如何从文件中输入NSDictionary的所有名称?或者如何才能拥有这样的功能?
抱歉我的英文。 :) 函数代码,它使nextFlag。
- (void)nextFlag
{
int tmp = random() % [avalibleFlags count];
NSString *imgString = [avalibleFlags objectAtIndex:tmp];
NSString *path = [[NSBundle mainBundle] pathForResource:imgString ofType:@"png"];
UIImage *newImage = [UIImage imageWithContentsOfFile:path];
currentFlagName = imgString;
[_currentFlag setImage:newImage];
[avalibleFlags removeObjectAtIndex:tmp];
NSMutableArray *tmpFlags = [allFlags mutableCopy];
[tmpFlags removeObjectAtIndex:tmp];
for (int i=0; i<3; i++)
{
int tmpNumber = random() % [tmpFlags count];
NSString *stringForButton = [tmpFlags objectAtIndex:tmpNumber];
[tmpFlags removeObjectAtIndex:tmpNumber];
[buttonNames insertObject:stringForButton atIndex:i];
}
int tmp2 = random() % 4;
[[_buttons objectAtIndex:tmp2] setTitle:imgString forState:UIControlStateNormal];
for (int i = 0, j = 0; i<4; i++) {
if ([[_buttons objectAtIndex:i] currentTitle] != currentFlagName)
{
[[_buttons objectAtIndex:i] setTitle:[buttonNames objectAtIndex:j] forState:UIControlStateNormal];;
j++;
}
}
}
答案 0 :(得分:1)
不是尝试将数字映射到国家/地区名称,而只是将图像名称映射到国家/地区名称。这样,确切的顺序并不重要。这在文件中最容易管理,正如您所提到的那样,名称确实应该是本地化的。因此,您希望使用一个特殊的本地化字符串表,将文件名映射到国家/地区名称。一种方便的方法是NSLocalizedStringFromTable()
。要在程序中检索特定标志的国家/地区名称,请使用:
NSString *countryName = NSLocalizedStringFromTable(imgString, @"FlagToCountry", @"");
然后在您的Code项目中为项目添加一个名为“FlagToCountry.strings”的本地化文件。它应该具有通常的.strings文件格式的国家映射的所有标志,如:
/* Australia */
"aus" = "Australia"
/* USA */
"usa" = "USA"
...