1

我正在与国家/地区制作应用程序,它是国旗。现在我有一个问题。我有从 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++;
        }
    }
}
4

1 回答 1

1

与其尝试将数字映射到国家名称,不如将图像名称映射到国家名称。这样,确切的顺序并不重要。这将是最容易在文件中管理的,正如您提到的,名称确实应该本地化。因此,您想使用一个特殊的本地化字符串表,将文件名映射到国家/地区名称。一种方便的方法是NSLocalizedStringFromTable(). 要在程序中检索特定标志的国家名称,您可以使用:

NSString *countryName = NSLocalizedStringFromTable(imgString, @"FlagToCountry", @"");

然后在您的代码项目中将一个本地化文件添加到您的项目中,名为“FlagToCountry.strings”。它应该具有通常的 .strings 文件格式的所有标志到国家/地区的映射,例如:

/* Australia */
"aus" = "Australia"

/* USA */
"usa" = "USA"
...
于 2012-08-29T20:24:51.017 回答