2014-12-11 7 views
2

답변을 검색하는 데 시간이 지나면이 케이스와 혼동하는 것을 인정해야합니다. 두 번째는 표시하기 전에다른 ViewController를 표시 한 후 현재 ViewController를 닫을 수 있습니까?

나는 이전의 UIViewController에있는 UIViewController을 제시해야, 실제로, 현재의 ViewController 자체를 기각 : 내 직업에서

는 정말 특별한 무언가를하도록 요구하고있다. 그것은 ViewController가 아래로 내려가는 재미있는 애니메이션과 그 이후의 다른 부분에서 일어나는 모든 것을줍니다. 그러나 ... 실제로 "프로"는 아니며 애니메이션 중에 장면 뒤에있는 rootViewController를 볼 수 있습니다.

그래서, 난 내 의견이 훨씬 더 쉽게 만들었을 것 NO있는 navigationController,이 없다는 것을 정확하게에, 그래서 두 가지의 UIViewController 함께 할 것을 강요하고있어, 내 실제 코드가있다 :

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
     UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"userViewController"]; 
     [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:controller animated:YES completion:^{ 
      [self dismissViewControllerAnimated:YES completion:nil]; 
}];  

버튼을 누르면 바로 호출되므로 실제 ViewController viewDidLoad 나 viewDidAppear에는 문제가 없습니다.

[1163:17641] Warning: Attempt to present <UserViewController: 0x7b0f0a00> on <EIHomeViewController: 0x7b0d2a00> whose view is not in the window hierarchy! 

정말 내가 다음의 ViewController viewDidAppear에를 닫 현재의 UIViewController의 추적을 유지 관리 할 수있는 방법을 모른다 :

는하지만이 코드가 실행될 때마다, 나는 다음과 같은 오류가 발생합니다 화면에 "정전"이 없도록하십시오.

미리 도움을 주셔서 감사합니다.

답변

0

이 코드를보십시오 :

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"userViewController"]; 
[self dismissViewControllerAnimated:NO completion:^{ 
    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:controller animated:NO completion:nil]; 
}]; 
+0

을 나는이 두 가지의 ViewController 사이 "정전"항상 플러스 난 더 이상하지 않아도, 애니메이션이었다 기각 점을 제외하고 이전과 동일한 코드를했다 " 올라간다 "애니메이션. 그러나 참으로, 그것은 지연을 크게 줄입니다. 하지만 새로운 ViewController viewDidAppear 후에 다른 View를 닫으려고 다른 ViewController를 추가 할 수있는 무언가를 찾고 있습니다. : s –

+0

그러나 현재 vc에서 다음 vc를 표시하면 root-> current-> next와 같은 스택을 갖게됩니다. 현재 (다음 presentingViewController) 현재 dismissViewControllerAnimated를 호출하면 다음도 사라집니다. –

+0

다음으로 루트를 호출 할 수있는 옵션이 없습니까? 스택이나 다른 레이어와 같은 해킹이 화면 상단에 나타납니다. –

관련 문제