2

사용자 지정 UITabBarController를 작성하므로 탭 표시 줄의 모양을 완전히 제어 할 수 있습니다. 나는 그것이 처리하는 뷰 컨트롤러의 배열을 가질 수 있도록 모든 것을 가지고있다.사용자 지정 UITabBarController보기 컨트롤러 및 뷰의 문제

컨트롤러에는 화면을 채우는 메인보기가 있으며 내부에는 탭 막대의 아래쪽에 UIView가 있습니다. 해당 탭 막대보기에는 각보기 컨트롤러에 대한 단추가 있습니다.

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight); 

이 모두 잘 작동, 그리고 내가보기 사이를 가볍게 할 수 있습니다 버튼은 탭 표시 줄보기를 포함하지 않도록 내가 기본보기에보기 컨트롤러의보기를 추가하고, 프레임의 설정을 누를 때 컨트롤러는 괜찮아. 그러나 모달보기 컨트롤러를 제시하고이를 닫으면 현재보기 컨트롤러의보기가 전체 화면이되어 내 탭 표시 줄을 덮습니다! 자동 크기 조정 마스크의 크기를 조정하지 않으려 고 시도했지만 계속 발생합니다.

[self.view insertSubview:controller.view atIndex:0]; 

을하지만 그렇게 할 때, 탭 표시 줄은 모달 뷰 이상도 볼 수 있습니다 :

은 또한 사용하여 (탭 표시 줄 아래) 컨트롤러가 아래로의를 보려면보기를 추가하는 시도! 이상합니다. 나는 내가 이해하지 못하는 어떤 것이 있다고 생각하여 누군가 내가 누락 된 것을 설명 할 수 있다면 감사 할 것입니다!

감사합니다,

마이크

답변

2

단순히 탭 컨트롤러 탭 표시 줄의 상단에 서브 뷰를 삽입하여 탭 표시 줄의 모양을 제어 할 수있는 더 좋은 방법을 찾기 위해 관리했습니다. 대접 받았다!

+0

안녕하세요, Bisbo, 표시 할 코드 스 니펫이 있습니까? 탭 모음을 덮고있는 두 번째 탭과 관련된보기와 비슷한 문제가 있습니다 (그러나 첫 번째 막대에서는 제대로 작동합니다). 티아! – Arun

+0

새 탭 막대의 높이가 같지 않으면 어떻게됩니까? 너는 어떻게 이걸 처리 하겠니? 나는 여기에 질문을 게시했다 : http://stackoverflow.com/questions/3766978/custom-uitabbarcontroller 당신이 대답 할 수 있는지 보아라. –

2

+0

의견을 보내 주셔서 감사합니다.하지만 불행히도 문제가 해결되지 않았습니다. –

2

이 밖으로 시도 컨트롤러의 viewWillAppear 방법에

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight); 

을 설정하십시오. 난 당신이 탭 막대 컨트롤러 내에서 동적보기 컨트롤러를 원하는 것 같아요.

-(void)applicationDidFinishLaunching:(UIApplication *)application { 

// Add the tab bar controller's current view as a subview of the window 
tabBarController.delegate=self; 
tabBarController=[[UITabBarController alloc] init]; 

mainDashBoard=[[DashBoard alloc] initWithNibName:@"DashBoard" bundle:nil]; 
mainSearchView=[[SearchView alloc] initWithNibName:@"SearchView" bundle:nil]; 
mainMoreView=[[MoreView alloc] initWithNibName:@"MoreView" bundle:nil]; 

UINavigationController *nvCtr0=[[[UINavigationController alloc] init] autorelease]; 
UINavigationController *nvCtr1=[[[UINavigationController alloc] initWithRootViewController:mainDashBoard] autorelease]; 
UINavigationController *nvCtr2=[[[UINavigationController alloc] initWithRootViewController:mainSearchView] autorelease]; 
UINavigationController *nvCtr3=[[[UINavigationController alloc] initWithRootViewController:mainMoreView] autorelease]; 
UINavigationController *nvCtr4=[[[UINavigationController alloc] init] autorelease];//[[[UINavigationController alloc] initWithRootViewController:nil] autorelease]; 

tabBarController.viewControllers=[NSArray arrayWithObjects:nvCtr0,nvCtr1,nvCtr2,nvCtr3,nvCtr4,nil]; 

nvCtr0.tabBarItem.enabled=NO; 
nvCtr4.tabBarItem.enabled=NO; 

[window tabBarController.view]; 
} 
관련 문제