0

iOS 응용 프로그램에서 이러한 구조를 갖는 것이 좋지 않음을 읽었습니다. 그러나 응용 프로그램에 UINavigationControllerUITabBarController이 많이있을 경우 어떻게됩니까? 하지만 하나의 UINavigationBar과 하나의 UITabBar은 항상 표시됩니까? 기타 UINavigationBarUITabBar이 숨겨져 있습니다. 이 코드 호출 기반 네비게이션 어플리케이션, 예를 들어UINavigationController는 다른 UINavigationControllers를 스택하는 UITabBarControllers를 스택합니까?

EDITED

:이 방법의 호출 이후

- (IBAction)openTabsController:(id)sender {   

    tabOneController *tabOneViewContr = [[[tabOneController alloc] initWithNibName:@"tabOneController" bundle:nil] autorelease]; 
    UINavigationController *tabOneNavContr = [[UINavigationController alloc] initWithRootViewController:tabOneViewContr]; 

    tabTwoController *tabTwoViewContr = [[[tabTwoController alloc] initWithNibName:@"tabTwoController" bundle:nil] autorelease]; 
    UINavigationController *tabTwoNavContr = [[UINavigationController alloc] initWithRootViewController:tabTwoViewContr]; 


    UITabBarController *tabContr = [[[UITabBarController alloc] init] autorelease]; 
    tabContr.viewControllers = [NSArray arrayWithObjects:tabOneNavContr,tabTwoNavContr, nil]; 
    sel.navigationController.navigationBar.hidden = YES; 
    [self.navigationController pushViewController:tabContr animated:YES]; 
} 

I는 두 UINavigationController의 하나 UITabBarController있다. 동시에 나는 하나의 UINavigationBar과 하나의 UITabBar을 화면에 가지고있다.

편집을 할

대략적인 계획. 처음부터

enter image description here

우리의 의견 (원) 사이를 탐색 할 수있는 UINavigationController가 있습니다. 그런 다음 UITabBar를 누른 후보기간에 전환 할 수 있습니다. 두 개의 작은 rect가있는 사각형은 2 개의 UITabBarItem이있는 UITabBar가있는 뷰입니다. UITabBarItem을 누르면 다른 UIView가 나타납니다. 이 UIView에서는 다른 UITabBar와 다른 뷰를 호출하는 버튼을 누를 수 있습니다. 다른 UITabBar로 숨겨져 있지 않으면 현재 UITabBar를 푸시 한 후에 표시됩니다. 지금은 더 명확합니까? 위의 코드는 내가 질문을 이해하지만 사과 문서가 분명하다 확실하지 않다

+0

질문을 이해하기 위해 코드 또는 앱 디자인을 게시해야합니다. – MaTTP

+0

이 코드는 이해하기에 충분한가요? – Gargo

+0

응용 프로그램과 같은 구조를 만드는 것은 제 아이디어가 아닙니다. 그러니 downvote하지 마십시오 – Gargo

답변

1

Gargo,

(애플의 제한 등 일부 애니메이션이 아니라 제외) 거의 완벽하게 작동합니다.

탭 바 컨트롤러의 인스턴스가 될 수 없으며, 이미 탐색 스택에 안됩니다 : 당신이 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated를 사용하는 경우는 viewController 말한다.

당신이 탐색 스택 내에서 탭 표시 줄 컨트롤러 인스턴스를 추진하고있다

[self.navigationController pushViewController:tabContr animated:YES]; 

않기 때문이다.

구조를 추가하면 다른 솔루션을 찾는 데 도움이 될 수 있습니다.

희망이 있습니다.

+0

가능하면 링크를 줄 수 있습니까? – Gargo

+0

@Gargo 어떤 링크를 제공해야합니까? 감사. –

+0

링크 당신은 이것에 관해 어디에서 읽었습니까? Apple의 모든 설명서가 온라인 상태라는 것을 이해합니다. – Gargo

1

앱은 항상 한 번에 하나의 작업 tabBarController 만 가져야합니다.

tabBarController도 루트보기 컨트롤러 여야합니다. 항상. (tabBarController 이전에 로그인 뷰 또는 이와 비슷한 것이 필요하다면, 로그인 뷰를 제거하고, tabBarController를 생성 한 다음, 그 뷰를 루트로 만드십시오).

Apple 엔지니어가 개인적으로 Apple에게 조언하는 내용입니다.

앱은 빠르고 쉽게 사용하고 탐색 할 수있는 작은 애플리케이션이어야합니다. 둘 이상의 tabBarController에 대한 필요성을 느끼는 경우 UI/사용 가능성 관점에서 앱 디자인이 잘못 될 가능성이 큽니다.

+0

이미 말했듯이 그런 인터페이스에 대한 제 아이디어가 아닙니다. 응용 프로그램 모양은 마치 한 번에 하나의 UITabBarController가 작동하는 것처럼 마음에 들지만 일부 UITabBarControllers로 구현됩니다. – Gargo

+0

TabBarControllers는 항상 Apple의 루트보기 컨트롤러 여야합니다. 따라서 하나 이상의 "로드"할 수 없습니다. 귀하의 시나리오에서 TabBarControllers는 루트가 아닙니다. 단지 그것을 숨기거나 네비게이션 스택에서 이전에 가지고 있으면 그것을 자르지 않습니다. – ader

관련 문제