0

私のアプリケーションでは、3つの言語のサポートを提供する必要があります。私のデフォルト言語は英語になります。ユーザーがコントローラーの設定で他の言語を選択すると、アプリケーション全体がその特定の言語に変更されます。このために、3つの言語すべてとそのデータを含むplistファイルを作成することにしました。現在、デフォルトの言語は英語です。ここで、LanguageControllerのplistを使用して言語を変更し、ホームコントローラーにプッシュしました。選択した言語(フランス語)の文字列がホームコントローラーで受信されませんでした。これが私のコードです、

//LanguageController.h

NSMutableDictionary *allDictElements;
NSString *selectedLanguage1;
NSArray *dummy;

@property(nonatomic,retain) NSMutableDictionary *allDictElements;
@property(nonatomic,retain) NSString *selectedLanguage1;
@property(nonatomic,retain) NSArray *dummy;

 //LanguageController.m

@synthesize allDictElements,selectedLanguage1,dummy;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    NSString *path= [[NSBundle mainBundle] pathForResource:@"Language" ofType:@"plist"];

    allDictElements = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"%@allDictElements",allDictElements);

    LeeValleyHomeViewController *homeController = [[LeeValleyHomeViewController alloc] initWithNibName:@"LeeValleyHomeViewController" bundle:[NSBundle mainBundle]];

     if (indexPath.row ==0)
     {
        //bookshelf button
        NSMutableDictionary *english=[[NSMutableDictionary alloc]init];
        english=[allDictElements objectForKey:@"English Language"];
        dummy=[english objectForKey:@"English"];
        selectedLanguage1=[dummy objectAtIndex:0];
        NSLog(@"english bookshelf button:%@",selectedLanguage1);
        homeController.selectedLanguage = selectedLanguage1;  
        NSLog(@"sel lang:%@",homeController.selectedLanguage);

     } else if (indexPath.row ==1) {
        //bookshelf button
        NSMutableDictionary *french=[[NSMutableDictionary alloc]init];
        french=[allDictElements objectForKey:@"French Language"];
        dummy=[french objectForKey:@"French"];
        selectedLanguage1=[dummy objectAtIndex:0];
        NSLog(@"french bookshelf button:%@",selectedLanguage1);
        homeController.selectedLanguage = selectedLanguage1;
        NSLog(@"sel lang:%@",homeController.selectedLanguage);

    } else {

        NSMutableDictionary *spanish=[[NSMutableDictionary alloc]init];
        spanish=[allDictElements objectForKey:@"Spanish Language"];
        dummy=[spanish objectForKey:@"Spanish"];
        selectedLanguage1=[dummy objectAtIndex:0];
        NSLog(@"spanish bookshelf button:%@",selectedLanguage1);
        homeController.selectedLanguage = selectedLanguage1;
        NSLog(@"sel lang:%@",homeController.selectedLanguage);
    }

    [self.navigationController pushViewController:homeController animated:YES];
}

このコントローラーでは、選択した言語文字列を細かく受信しています。

//LeeValleyHomeViewController.h

NSString *selectedLanguage;

@property (nonatomic,retain) NSString *selectedLanguage;

 //LeeValleyHomeViewController.m

@synthesize selectedLanguage;

- (void)viewDidLoad
{
    LanguageViewController lvc = [LanguageViewController alloc]init];
    bookshelfbtn.titleLabel.text = lvc.selectedLanguage1;
    NSLog(@"button title:%@",bookshelfbtn.titleLabel.text);
   //bookshelfbtn.titleLabel.text = selectedLanguage;
}

このコントローラーでは、その文字列値を受け取っていません。私のコードの何が問題になっていますか?またはどうすればこれを行うことができますか?前もって感謝します。

4

2 に答える 2

1

選択した言語を NSUserDefaults に保存し、次のように LeeValleyHomeViewController.m の ViewDidLoad で取得できます.....

あなたの中で、

  • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    {

    // 言語選択後

    [[NSUserDefaults standardUserDefaults]setValue:selectedLanguage1 forKey:@"language"]; [[NSUserDefaults standardUserDefaults]同期];

    }

//LeeValleyHomeViewController.m

  • (void)viewDidLoad

{

NSLog(@"button title:%@",bookshelfbtn.titleLabel.text);
bookshelfbtn.titleLabel.text =  [[NSUserDefaults standardUserDefaults]valueForKey forKey:@"language"];

}
于 2012-12-05T06:08:00.360 に答える
0

LanguageControllerコードの最初のブロックにある " " が、コードの 2 番目のブロックにある " " と同じかどうかはわかりませんLanguageViewController

selectedLanguage1しかし、そうである場合、" " をインスタンス化した後、" " プロパティがゼロ以外に設定されるのはなぜだと思いますLanguageViewControllerか? ユーザーはまだセルに触れていないため、可能性のある唯一の言語は英語 (値はゼロ) です。

于 2012-12-05T06:04:14.843 に答える