-3

iOSのテーブルビューに3つの言語があります。ユーザーが任意の言語を選択すると、その言語に応じて nib ファイルが自動的に変更されます。

4

3 に答える 3

0

次のような言語クラスを作成します。

@implementation Language

static NSBundle *bundle = nil;

+(void)initialize {
 NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
 NSArray* languages = [defs objectForKey:@"AppleLanguages"];
 NSString *current = [[languages objectAtIndex:0] retain];
 [self setLanguage:current];

}

/*
  example calls:
  [Language setLanguage:@"it"];
  [Language setLanguage:@"de"];
*/
+(void)setLanguage:(NSString *)l {
 NSLog(@"preferredLang: %@", l);
 NSString *path = [[ NSBundle mainBundle ] pathForResource:l ofType:@"lproj" ];
 bundle = [[NSBundle bundleWithPath:path] retain];
}

+(NSString *)get:(NSString *)key alter:(NSString *)alternate {
 return [bundle localizedStringForKey:key value:alternate table:nil];
}

@end

次に、テーブルビューを実装する関数をビューコントローラに配置し、ピッカービューを使用してドロップダウンメニューを表示できます。

- (NSInteger)selectedRowInComponent:(NSInteger)component{
    if (component == 0)
    {
      [Language setLanguage:@"de"];
    }
    if (component == 1)
    {
       [Language setLanguage:@"it"];
    }
} 

お役に立てれば...

于 2013-02-27T07:07:16.510 に答える
0

UIViewControllerVC1、VC2、VC3 などの3 つを作成し、3 つ.h fileすべて ( UIViewController ) をmainVC.m(ここではmainVCUITableView含まUIViewControllerれています) に入れます。

#import "VC1.h"
#import "VC2.h"
#import "VC3.h"

の使用didSelectRowAtIndexPath方法UITableView

#pragma mark - UITableView Delegate

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0)
    {
        VC1 *ob1 = [[VC1 alloc] init];
        [self presentModalViewController:ob1 animated:YES];
    }
    if (indexPath.row == 1)
    {
        VC2 *ob2 = [[VC2 alloc] init];
        [self presentModalViewController:ob2 animated:YES];
    }
    if (indexPath.row == 2)
    {
        VC3 *ob3 = [[VC3 alloc] init];
        [self presentModalViewController:ob3 animated:YES];
    }

}
于 2013-02-27T06:37:29.357 に答える
-1

これを試してください。同じ ViewController に対して以下のように 3 つの nib ファイルを使用するか、3 つの nib で 3 つの ViewController を使用できます。

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0)
    {
        HomeViewController * objHome            =   [[HomeViewController alloc]initWithNibName:@"Write your 1 nib name here" bundle:nil];
    [self.navigationController pushViewController :objHome animated:NO];
    }
    if (indexPath.row == 1)
    {
        HomeViewController * objHome            =   [[HomeViewController alloc]initWithNibName:@"Write your 2 nib name here" bundle:nil];
    [self.navigationController pushViewController :objHome animated:NO];
    }
    if (indexPath.row == 2)
    {
       HomeViewController * objHome            =   [[HomeViewController alloc]initWithNibName:@"Write your 3 nib name here" bundle:nil];
    [self.navigationController pushViewController :objHome animated:NO];
    }

}

ARC を使用していない場合は、忘れずにオブジェクトを解放してください。

于 2013-02-27T06:47:34.653 に答える