2017-01-11 4 views
0

한 번에 두 개 이상의 컨트롤러를 표시 할 방법이 있는지 검색 중입니다. 네비게이션 컨트롤러와 같은두 개 이상의 ViewController를 동시에 표시 IOS

뭔가 :

그러나 모달 컨트롤러 https://stackoverflow.com/a/28464115/5790492. 이제 첫 번째 컨트롤러에는 presentViewController:animated:false을, 두 번째 컨트롤러에는 또 다른 presentViewController:animated:true을 입력하면됩니다. 하지만 오류가 발생합니다 :

Unbalanced calls to begin/end appearance transitions for 

그리고 두 번째 애니메이션 전에 먼저 ViewController를 봅니다. 이것은 예쁘지 않다. 방법을 사용할 때 완벽 할 것입니다.

- (void)presentInController:(UIViewController *)current controllerA:(UIViewController *)controllerA controllerB:(UIViewController *)controllerB; 

화면에 - 애니메이션이있는 컨트롤러 B로 전환 중입니다. 그리고 그를 그를 controllerA로 해고하는 것이 가능할 것입니다.

+0

그래서 그냥 화면에하지로드, 당신은 할 수 자신의 프레임을 초보자가 아닌 외부에 놓고 앞으로 올리면 애니메이션을로드합니다. –

+0

예를 들어 나란히 놓아서 같은 시간에 화면에 표시하고 싶습니까? 이 https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html을 살펴 보셨습니까? – Losiowaty

답변

1

Use ContainerView는 내가 생각할 수있는 한 가지 방법입니다. 기본적으로 2 개의 ContainerView와이 각각의 포인트를 "Embed"방식으로 표시하고자하는 2 개의 ViewController로 드래그합니다 (일반적으로 그렇게 할 것입니다). IB에서 ContainerView 객체를 끌어서 Storyboard의 기본보기로 끌어다 놓는 것과 똑같은 코드이기 때문에 실제로는 코드가 없습니다.

+1

답변이 너무 흐립니다 (맞지만). 코드 스 니프 (snip) 및 추가 정보를 제공하십시오. – OhadM

+0

Ok 추가 세부 정보를 추가하십시오. 하지만 containerview 정말 코드가 필요하지 않습니다. 드래그 앤 드롭 항목입니다. – GeneCode

-1

GCD을 사용하면 Unbalanced calls to begin/end appearance transitions for 오류를 피할 수 있습니다.

//delayInSeconds 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    //code to be executed after a specified delay 
    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerName"]; 
    [self presentViewController:vc animated:false completion:nil]; 
}); 

당신이 원하는만큼 delayInSeconds를 변경하십시오.

가 이렇게 될 수

  • presentViewController이 : 애니메이션 : 애니메이션 : 거짓
  • 또 다른 presentViewController GCD 지연 사실
+0

불균형 호출은 viewDidAppear 인 실제 계층 구조를 푸시하기 전에 VC를 표시 한 결과입니다. 귀하의 솔루션은 해결책이 아니라 임시 방편으로, 이는 나쁜 습관입니다. – OhadM

+1

미안하지만 지연이 필요하지 않으며 이것이 주요 질문입니다. –

+0

@NikKov는 대리자 메서드를 사용하여 다른 viewcontroller를 닫고 표시합니다. –

관련 문제