2014-05-09 2 views
0

내 목표는 if/else 문을 작성하여 TabBarItem이 선택된 경우 setSelectedImageTintColor를이 색상으로 말할 수있게하는 것입니다.iOS - 어떤 UITabBar 옵션이 선택되었는지 확인하는 간단한 방법

ObjC를 처음 접했고 if 문을 구현하는 방법이 확실하지 않습니다. 여기 내 viewDidLoad에 있습니다 :

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

UITabBarItem *item0 = [self.tabBar.items objectAtIndex:0]; 
item0.image = [[UIImage imageNamed:@"red.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 


UITabBarItem *item1 = [self.tabBar.items objectAtIndex:1]; 
item1.image = [[UIImage imageNamed:@"yellow.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

UITabBarItem *item2 = [self.tabBar.items objectAtIndex:2]; 
item2.image = [[UIImage imageNamed:@"green.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

UITabBarItem *item3 = [self.tabBar.items objectAtIndex:3]; 
item3.image = [[UIImage imageNamed:@"black.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

[[UITabBar appearance] setSelectionIndicatorImage: 
[UIImage imageNamed:@"item.png"]]; 


} 

당신은 내가 TabBarItems의 각 지정된 별도의 이미지를 가지고 있고, 내가 강조 색상이 red.png의 이미지 (그래서 빨간색 하이라이트와 일치하고 싶습니다 볼 수 있듯이, yellow.png 등 노란색)

이 if/else 문을 어떻게 구현할 수 있습니까? 다시 말하지만, indexPath (0-3)를 확인한 다음 tabBarItem에 대한 사용자 정의 setSelectedImageTintColor를 설정하고 싶습니다. 나를위한 또 다른 옵션은 이것이 더 실용적이라면 모두 하이라이트를 제거하는 것입니다.

답변

0

당신은 당신의 ViewController에 UITabBarDelegate protocol을 구현하고 UITabBar을 설정해야합니다을 자기에게 위임하다

self.tabBar.delegate = self; 

그런 다음이 메소드를 구현할 수 있습니다. tabBar:didSelectItem:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    // Check here for the item and change tintColor accordingly 
    // For example: 
    if([item isEqual:[self.tabBar.items objectAtIndex:1]) { 
     tabBar.selectedImageTintColor = [UIColor redColor]; 
    } 
} 
0

위의 작업을 수행하려고 시도한 것의 100 % 확신 할 수는 없지만 (어떤 스크린 샷을 포함해도 좋을 것입니다.) 어떤 UITabBar 항목이 선택되었는지 알고 싶으면 위임을 설정해야합니다 당신의 UITabBarController가에 다음 쓰기 구현하는 방법

-tabBarController:didSelectViewController:

그리고 당신은 당신의 탭 표시 줄 항목의 색상이나 아이콘을 변경할 수 있습니다.

탭 모음 컨트롤러를 IBOutlet으로 설정하면 컨트롤러의 "selectedIndex" property을보고 어떤 탭이 선택되었는지 프로그래밍 방식으로 지정할 수 있습니다. 당신은 당신이 탭을 전환 할 때마다 업데이트 할 이미지를 원하는 경우

1
- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

UITabBarItem *item0 = [self.tabBar.items objectAtIndex:0]; 
item0.image = [[UIImage imageNamed:@"red.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 


UITabBarItem *item1 = [self.tabBar.items objectAtIndex:1]; 
item1.image = [[UIImage imageNamed:@"yellow.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

UITabBarItem *item2 = [self.tabBar.items objectAtIndex:2]; 
item2.image = [[UIImage imageNamed:@"green.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

UITabBarItem *item3 = [self.tabBar.items objectAtIndex:3]; 
item3.image = [[UIImage imageNamed:@"black.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

[[UITabBar appearance] setSelectionIndicatorImage: 
self.tabBar.selectedItem.image]; 


} 

는 :

@interface MyClass : UIViewController 

변경을 : 당신의 .H 파일에서

를,이 같은 라인을해야합니다

@interface MyClass : UIViewController <UITabBarDelegate> 

물론 MyClass를 클래스 이름으로 바꿉니다. 당신의하는 .m 파일에서

self.tabBar.delegate = self; 

이 같은 tabBar:didSelectItem: 구현 : 당신의 viewDidLoad:에서

이 줄을 추가

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
    [[UITabBar appearance] setSelectionIndicatorImage:item.image]; 
}