iOSのテーブルビューに3つの言語があります。ユーザーが任意の言語を選択すると、その言語に応じて nib ファイルが自動的に変更されます。
質問する
60 次
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
UIViewController
VC1、VC2、VC3 などの3 つを作成し、3 つ.h file
すべて ( UIViewController ) をmainVC.m
(ここではmainVCがUITableView
含ま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 に答える