View Controller 및 View의 사용자 정의 UitabbarController 문제
-
07-07-2019 - |
문제
맞춤 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];
그러나 내가 그렇게 할 때, 탭 막대는 모든 모달 뷰보다 볼 수 있습니다! 이상합니다. 내가 이해하지 못하는 것이 있다고 생각합니다. 누군가 내가 놓친 것을 설명 할 수 있다면 감사 할 것입니다!
감사,
마이크
해결책 3
탭 컨트롤러 탭 막대의 상단에 하위 뷰를 삽입하여 탭 막대의 모양을 제어 할 수있는 더 나은 방법을 찾았습니다. 그것은 치료를 받았습니다!
다른 팁
설정해보십시오
controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight);
컨트롤러의 ViewWillAppear 메소드에서
이것을 시도하십시오. 탭 바 컨트롤러 내에서 동적보기 컨트롤러를 원한다고 생각합니다.
-(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];
}
제휴하지 않습니다 StackOverflow