在UIAlertView中不允许有一个本地化字符串

时间:2014-08-12 10:02:39

标签: ios objective-c xcode uialertview

我尝试做本地化。它的工作正常,但在这里,我在UIAlertView中遇到了问题。它不适用于超过一个字符串,但我需要保留多个字符串AlertView OtherButton标题。

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AlertTitle", @"")
                                                        message:NSLocalizedString(@"AlertMessage", @"")
                                                       delegate:nil
                                              cancelButtonTitle:NSLocalizedString(@"AlertCancel", @"")
                                              otherButtonTitles:NSLocalizedString(@"AlertOk", @""), nil];

3 个答案:

答案 0 :(得分:1)

UIAlertView *alert =  [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%@",NSLocalizedString(@"AlertTitle",nil)] message:[NSString stringWithFormat:@"%@",NSLocalizedString(@"AlertMessage",nil)] delegate:nil cancelButtonTitle:[NSString stringWithFormat:@"%@",NSLocalizedString(@"AlertCancel",nil)] otherButtonTitles:[NSString stringWithFormat:@"%@",NSLocalizedString(@"AlertOk",nil)], nil];

答案 1 :(得分:1)

尝试以下代码。

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AlertTitle", nil) message:NSLocalizedString(@"AlertMessage", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Change Password", nil), NSLocalizedString(@"Profile", nil), NSLocalizedString(@"log out", nil), nil];
[alertView show];

答案 2 :(得分:0)

为了简化所有NSLocalizedString调用,我使用了这个技术

#define Trad(string, ...)  [NSString  stringWithFormat: NSLocalizedString(string, nil), ##__VA_ARGS__]

然后您可以像这样创建AlertView:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:Trad(@"Title")
                                                    message:Trad(@"Message")
                                                    delegate:nil
                                           cancelButtonTitle:Trad(@"Cancel")
                                           otherButtonTitles:Trad(@"Button1"),
                                                             Trad(@"Button2"),
                                                             Trad(@"Button3"), nil];

#define语句不是必需的,它的唯一目的是简化代码。