2013-03-05 3 views
-1

사용자 지정 탭 컨트롤러를 자체 View Controller와 관련된 단추 집합으로 구현했습니다. 이 링크를 통해 http://idevrecipes.com/2011/01/04/how-does-the-twitter-iphone-app-implement-a-custom-tab-bar/을 얻었습니다. 다음과 같이 그래서 코드의 관련 부분은 다음과 같습니다 사용자 지정 TabBar 탐색 문제

- (void) selectedItemAtIndex:(NSUInteger)itemIndex 
{ 
// Get the right view controller 
NSDictionary* data = [self.tabBarItems objectAtIndex:itemIndex]; 
UIViewController* viewController = [data objectForKey:@"viewController"]; 

// Remove the current view controller's view 
UIView* currentView = [self.view viewWithTag:SELECTED_VIEW_CONTROLLER_TAG]; 
[currentView removeFromSuperview]; 


// Set the view controller's frame to account for the tab bar (+ 48) 
viewController.view.frame = CGRectMake(0,48,self.view.bounds.size.width, self.view.bounds.size.height - 48); 

// Se the tag so we can find it later 
viewController.view.tag = SELECTED_VIEW_CONTROLLER_TAG; 

// Add the new view controller's view 
[self.view insertSubview:viewController.view belowSubview:self.tabBar]; 

//Keep track of current view controller 
self.currentController = viewController; 
} 

지금까지 노력하고, 나는 기본 TabBarViewController 유사한 maner 각 뷰 컨트롤러를 볼 수 있습니다

. 그렇지만 탭 컨트롤러 중 하나에서 새로운 탐색 컨트롤러를 모달로 (모든 응용 프로그램 프레임을 가져와야 함) 밀어 넣어야하는 요구 사항이 있습니다. 언뜻

나는 탭 컨트롤러 중 하나 내에서 다음 코드를 시도 : 예상대로

그러나
DetailViewController *detailViewController = [[DetailViewController alloc]init]; 
UINavigationController *navigationController = [[UINavigationController alloc]detailViewController]; 
[self presentModalViewController:navigationController animated:YES]; 

가 먼저보기는 TabBar의 아래에 표시되어 작동하지 않으며 두 번째 새보기는 복용하지 않습니다 고려해야 할 것은 화면이어야하는 부모 뷰 프레임이 탭 바를 덜 제한한다는 점입니다. (0, 48, 360, 412). 내 세부보기 컨트롤러 그것은 nib 파일에서 콘텐츠를로드합니다.

TabBar 컨트롤러가 각보기를 내 사용자 지정 TabBar 아래에 삽입하므로 이는 매우 분명합니다. 내가 알아낼 수 없습니다 더 나은 방법이 있어야한다 ...이 괜찮 아니라고 생각,

[[UIApplication sharedApplication].keyWindow addSubview:navigationController.view]; 

을하지만 :

[self presentModalViewController:navigationController animated:YES]; 

그래서 나는 윈도우 서브 뷰로 직접 삽입했습니다. 그래서 누군가가 나에게이 네비게이션 시스템을 수정하거나 개선하는 방법에 대한 제안을 줄 수 있다면 좋을 것입니다.

고마워요.

답변

0

iOS 5.0 이상용 앱을 만드는 경우 childViewController를 사용할 수 있습니다. 사용자 지정 Tab Bar에서 containerView 및 tabView를 가질 수 있습니다.

viewController 뷰가 containerView에 추가되었습니다. 의 ViewController의 밀폐를 here.

+0

감사를 찾을 수 있습니다에 대한 다음과 같은 방법이 제대로

- (void)addChildViewController:(UIViewController *)childController; - (void)removeFromParentViewController; 

더를 구현하는 경우 필요한 모든 이벤트가 이후 추가의 ViewController에 생성, 불행하게도 나는 4.x의 장치를 지원해야합니다. – Pablo

+0

결정을 내릴 특권이있는 경우,보기 컨트롤러 억제가 매우 쉬워 지므로 최소 대상 5.0을 선택할 수 있습니다. – Anupdas