2011-10-25 1 views
0

UTabbarController를 기반으로 앱을 만듭니다. 프로그래밍 방식으로 탭 표시 줄을 만듭니다. tabBatItem 제목을 볼 수 없다는 점을 제외하면 모든 것이 잘 돌아갑니다. 모든 것을 제대로 초기화했지만 응용 프로그램이 시작될 때 처음 볼 수있는 것은 모두 첫 번째 탭 제목입니다. 하지만 두 번째 tabbaritem을 선택하면 이름이 표시됩니다. 나는 여기서 무엇이 잘못되고 있는지 모른다. 여기 내 코드가있다. 실수를했는지 알려주세요.UITabBarController tabbarItems 이름을 표시하지 않습니다.

감사합니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

    HomeViewController *viewController1 = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 
UINavigationController*navController1=[[UINavigationController alloc]initWithRootViewController:viewController1]; 
[email protected]"Home"; 
[viewController1 release]; 

TrainerTableViewController *viewController2 = [[TrainerTableViewController alloc] initWithNibName:@"TrainerTableViewController" bundle:nil]; 
UINavigationController*navController2=[[UINavigationController alloc]initWithRootViewController:viewController2]; 
[email protected]"Trainer"; 
[viewController2 release]; 

SettingsTableViewController *viewController8 = [[[SettingsTableViewController alloc] initWithNibName:@"SettingsTableViewController" bundle:nil] autorelease]; 
UINavigationController*navController8=[[[UINavigationController alloc]initWithRootViewController:viewController8]autorelease]; 
[email protected]"Settings"; 

AboutUsViewController *viewController9 = [[[AboutUsViewController alloc] initWithNibName:@"AboutUsViewController" bundle:nil] autorelease]; 
UINavigationController*navController9=[[[UINavigationController alloc]initWithRootViewController:viewController9]autorelease]; 
[email protected]"About Us"; 


self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navController1, navController2,navController8, navController9, nil]; 

[navController1 release]; 
[navController2 release]; 
self.window.rootViewController = self.tabBarController; 
[self.window makeKeyAndVisible]; 
return YES; 
} 

답변

3

각 탭 표시 줄 항목에 대한보기 컨트롤러의 .m 파일 내에 아래 코드를 포함하면이 작업을 수행 할 수 있습니다. 코드에는 탭 막대에서 이미지를 변경하는 방법도 포함됩니다.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization. 
     self.title = @"Apply Now"; 
     self.tabBarItem.image = [UIImage imageNamed:@"tbApplyNow.png"]; 
    } 
    return self; 
} 
+0

감사합니다. @Louie !! 당신은 내 하루를 저장합니다. 대답은 +1입니다. 하지만 하나의 질문 : 왜 그것은 initWithNibName 함께 작동하고 viewDidLoad 함께 아닌? –

0

navController1의 제목 만 설정하고 있습니다. 당신이 만드는 각각의 냅킨 컨트롤러에 대해 당신은 그 하나의 제목을 설정해야합니다.

이 시도 :

변경 : navController1.title = @ "트레이너"; to navController2.title = @ "Trainer";

변경 : navController1.title = @ "Settings"; to navController8.title = @ "Settings";

변경 : navController1.title = @ "About Us"; to navController9.title = @ "About Us"; 메모리에 원인이됩니다 당신이 navController8 또는 9를 해제하지 않습니다되지 또한

당신은 실제로 NavigationControllers의 제목을 설정하는

0

누출. 또한 코드가 navController1의 제목을 여러 번 설정하는 것이 아니라 다른 설정으로 지정하는 것이 좋습니다.

각 컨트롤러에 대해 tabBarItem을 설정하여 탭바의 제목을 설정할 수 있습니다.

AppDelegate의 application:didFinishLaunchingWithOptions: 메서드에서 서브 클래 싱하거나이를 포함하는 옵션이 있습니다.

UITabBarItem *tbi1 = [navController1 tabBarItem]; 
[tbi1 setTitle:@"Home"]; 

UIImage *i1 = [UIImage imageNamed:@"hometabicon.png"]; 
[tbi1 setImage:i1]; 

이 '홈'에 TAB1의 제목을 설정하고 'hometabicon.png'라는 이름의 파일에 한 tabBar 아이콘을 설정합니다 :

다음은 예입니다.

다른 탭 각각에 대해 동일한 패턴을 반복 할 수 있습니다.

+0

도움을 많이 주셔서 감사합니다. – slonkar

2

이 문제를 해결하는 가장 좋은 방법은

viewController1.tabBarItem.title = @"CohesiveSelf"; 

있는 navigationController

의하지의 ViewController의 제목을 설정 모든 탭에 대해이 작업을 수행하는 것입니다.

관련 문제