2014-11-26 4 views
0

프로그래밍 방식으로 탭 표시 줄에 이미지를 설정하려고 할 때 문제가 있습니다.iOS에서 프로그래밍 방식으로 탭 표시 줄 항목 이미지를 변경하면 작동하지 않습니다.

검은 색 배경의 모든 탭과 흰색 텍스트의 흰색 아이콘이 있어야합니다. 그리고 탐색 할 때 선택된 탭이 흰색 아이콘과 제목이있는 빨간색 배경을 갖도록 변경됩니다. 지금은 테스트 목적으로 모든 탭에 동일한 이미지가 있습니다. 그러나 그들은 모두 다른 이미지가 될 것입니다.

내 문제는이 코드가 무시되고 "원본"(스토리 보드의 설정 포함)이 나타나는 것입니다. 스토리 보드에서 값을 변경하는 경우를 제외하고는 아무 것도 변경되지 않습니다.

나는 같은 내 AppDelegate에 파일의 didFinishLaunchingWithOptions에서 그들을 설정하려고 : 내가 잘못 뭐하는 거지

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UITabBarController *tc = [mainStoryboard instantiateViewControllerWithIdentifier:@"tabbar"]; 

UITabBar *tabBar = tc.tabBar; 
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; 
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; 
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2]; 
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3]; 
UITabBarItem *tabBarItem5 = [tabBar.items objectAtIndex:4]; 

tabBarItem1.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem1.image = [[UIImage imageNamed:@"ikon_clubkort"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem1.title = @"xxxx"; 

tabBarItem2.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem2.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem2.title = @"xxxx"; 

tabBarItem3.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem3.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem3.title = @"xxxx"; 

tabBarItem4.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem4.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem4.title = @"xxxx"; 

tabBarItem5.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem5.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem5.title = @"xxxx"; 

return YES; 
} 

어떤 생각을?

답변

2

기본적으로 독자는 프로그래밍 방식으로 Tab Bar Controller를 만들고 있지만 표시하지는 않습니다.

당신은이 일을 할 수있다 :

  1. application:didFinishLaunchingWithOptions의 끝이를 넣어, 대리인의 루트 뷰 컨트롤러로 생성 된 탭 바 컨트롤러를 설정합니다

    self.window.rootViewController = tc

  2. 만들기 UITabBarController의 하위 클래스 인 경우 새 클래스 'viewDidLoad 메서드에있는 탭 막대 항목 설정 코드를 입력하고 클래스를 스토리 보드의보기 컨트롤러에 할당합니다.

+0

내가 self.window.rootViewController = tc로 설정하면 내 싱글 톤이 재설정됩니다. 이것에 대한 해결책은 무엇입니까? – user1385341

+0

미안, 어떤 싱글턴? 어쨌든 나는 첫 번째 옵션보다 두 번째 옵션을 권하고 싶습니다. – remingtonspaz

+0

나는 사용자 데이터를 저장하는 싱글 톤 객체를 가지고 있지만, 싱글 톤은 결코 설정되지 않는다. self.window.rootViewController = tc를 설정하면 로그인 클래스를 건너 뛸 수 있기 때문이다. 첫 번째 탭 창으로 직접 점프합니다. self.window.rootViewController = tc를 설정하지 않으면 앱이 로그인 페이지에서 시작됩니다. – user1385341