2012-09-21 8 views
1

내 AppDelegate에에 내가 가진 내 탭 표시 줄의 항목을, 현지화,이 코드 :TabBar의 항목 현지화

self.tabBarController = (UITabBarController*)self.window.rootViewController; 
tabBarController.delegate = self; 
tabBarController.selectedIndex = 0; 
[[tabBarController.tabBar.items objectAtIndex:0] setTitle:NSLocalizedString(@"Home", nil)]; 
[[tabBarController.tabBar.items objectAtIndex:1] setTitle:NSLocalizedString(@"Requests", nil)]; 
[[tabBarController.tabBar.items objectAtIndex:2] setTitle:NSLocalizedString(@"Account", nil)]; 
[[tabBarController.tabBar.items objectAtIndex:3] setTitle:NSLocalizedString(@"Alarms", nil)]; 
[[tabBarController.tabBar.items objectAtIndex:4] setTitle:NSLocalizedString(@"Settings", nil)]; 

는 지금은 다른 항목을 추가하고 인덱스 = 5 새로운 라인을 추가하려고하지만 한 인덱스 5가 경계를 넘기 때문에 "NSRangeException"이 발생합니다. Xcode가 자동으로 "추가"섹션을 추가하고 거기에 마지막 두 항목 (설정 및 새 항목)을 옮겼습니다. 사용자는 이제 항목 순서를 선택하여 탭 표시 줄을 사용자 정의 할 수 있습니다. 이제 어떻게 모든 항목을 참조하고 지역화 할 수 있습니까? 참고 : 스토리 보드를 사용하고 있습니다.

감사합니다.

답변

0

먼저 현지화하려면 번역해야하는 언어로 텍스트를 번역하십시오. 분리 기준 일반 현지화 및 tabBarItem이 없습니다.

해당 언어로 제공된 텍스트가 지역화 된 String입니다.

"Home"="translate text"; 
"Requests"="translate text"; 
"Account"="translate text"; 
"Alarms"="translate text"; 
"Settings"="translate text"; 

여기에서 설정 한 TabbarButton의 설정 제목. 그것은 구현 클래스 나는 많은 탭 표시 줄의 항목도 각 항목을 만져 사용자에 대한 충분한 공간이 아니에요 때문에 좋은 방법이라고 추가 생각하지 않는다

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) 
{ 
    // set title here 
} 
return self; 
} 
+0

나는 Vineesh TP가 그게 문제가 아니라는 것을 알고있다. 문제는 index = 5 인 새 tabbar 항목을 추가하면 NSRangeException 오류가 발생한다는 것입니다. 아니면 setTitle이 필요 없다는 의미입니까? – Aleph72

+0

탭바 응용 프로그램을 가져 왔습니까? , 응용 프로그램 대리인 클래스에없는 바 버튼 제목. 그것은 당신의 구현 클래스에서 주어진해야합니다 –

+0

알아. AppDelegate에 앱을 시작 했으므로 앱을 시작하고 무언가를 확인한 다음 일부 탭 표시 줄 항목에 배지를 설정합니다. – Aleph72

-2

에서 구현해야합니다. 그에 상응하는 사소한 항목을 "MORE" 바 항목으로 넣는 것이 좋습니다. 나쁘지만 사용자 환경을 개선하는 데 도움이됩니다. 그런 요구 사항이 있다면 탭 바 (물론 실제 탭 바가 아닙니다)로 사용자 정의 된 UIView를 만들고 원하는대로 넣을 수 있습니다.

1

가장 쉬운 해결책은 awakeFromNib 메서드를 구현하는 것이 었습니다.이 메서드는 탭을 사용하는 경우에도 실행됩니다.

// Objective-C 
- (void)awakeFromNib{ 
    [super awakeFromNib]; 
    self.title = NSLocalizedString(@"YOUR-LOCALISATION-TAG", @""); 
} 


// Swift 
override func awakeFromNib() { 
    super.awakeFromNib() 
    self.title = NSLocalizedString("YOUR-LOCALISATION-TAG", comment: "") 
}