2010-03-25 2 views
1

유일한보기 컨트롤러에는 UITabBar에 대한 콘센트가있는 간단한 앱이 있습니다. 또한 UITabBarDelegate를 구현하고의 UITabBar의 대리인으로 설정됩니다 컨트롤러가없는 UITabbar

@interface TheMainViewController : UIViewController <UITabBarDelegate> 
{ 
     IBOutlet UITabBar *theTabBar; 
} 

내가 내 4 UITabBarItems 중 하나가 탭받을 때마다 호출되는 다음과 같은 방법을 구현했습니다. 난 그냥 정말 간단 뭔가 일을 시도 : 이론적으로

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
     tabBar.selectedItem = [tabBar.items objectAtIndex:0]; 
     return; 
} 

를, 그것은 항상 내 첫 번째 탭에 선택된 상태로 유지하고 난 그냥 어떤 UITabBarItem을 누를 때 완벽하게 작동한다 (아무 변화가 없습니다, 첫 번째는 항상 선택 상태로 유지됩니다). 하지만 UITabBarItem을 터치하고 손가락을 떼지 않고 잡고 있으면 어쨌든 선택이 변경됩니다! 디버깅, 모든 것이 제대로 호출됩니다.

selectedItem 속성을 변경해도 효과가 없다는 것은 사용자가 여전히 "아래로"(손가락으로) 항목을 갖고있는 것과 같습니다.

좋은 해결 방법은 무엇입니까? 나는 UITabBar에 과부하를 시도하고 touchesBegan과 touchesEnd와 어지럽 혔지. 그러나 그들은 심지어 불리지 않는다. UITabBarItem과 동일합니다.

오, 내 응용 프로그램에 충분히 융통성이 없으므로 UITabBarController를 사용하지 않는 것이 좋습니다.

실망 스럽다 .... 고마워!

답변

2

마치 - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 은 사용자가 자신의 손가락을 가져 갔을 때 호출됩니다.

UITabBarController를 사용하고 싶지는 않지만 여기에 원하는 모든 기능이 있습니다. 왜 컨트롤러를 사용하지 않으시겠습니까? 작동해야

UITabBarController가 위임 방법 :

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

그런 다음 당신이 거기에 돌아올 수 있고, 선택이 변경되지 않습니다.

+1

글쎄 기본적으로 나는 이미 Tabbar의 상태에 따라 (슬라이드 안팎으로) 움직이는 다른 뷰를 가지고 있습니다. 또한, 내 tabbar는 컨트롤러처럼 하단에 있지 않습니다. 컨트롤러로 전환하려면 피해야 할 주요 리펙터가 필요합니다. 다른 의견으로는 tabbaritem을 클릭 한 채로 놓으면 실제 항목이 해제 될 때만 강조 표시 되더라도 작은 지연 후에 "didselectitem"함수가 호출됩니다. – Etienne