2016-07-03 3 views
1

ViewController를 제대로 파괴하는 방법을 찾지 못했습니다. 내 프로젝트에는 3 개의 뷰 컨트롤러가 있습니다. The Storyboard Layout (IMG)Swift - 모달 뷰에서 떨어져 ViewController를 제대로 파괴하지 않습니다.

첫 번째보기 컨트롤러는 두 번째보기 컨트롤러와 연결됩니다. 두 번째보기 컨트롤러는 모달적으로 세 번째보기과 연결됩니다. 세 번째보기가 화면에 있으면 두 번째 화면이 배경에서 계속 볼 수 있습니다 (세 번째보기는 투명한 배경을가집니다).

그러나 세 번째보기 컨트롤러에서 멀리 떨어져 첫 번째보기 컨트롤러로 돌아 가면 배경에있는 두 번째보기 컨트롤러가 소멸되지 않습니다.

viewDidAppear - ViewController1 
viewWillDisappear - ViewController1 
viewDidAppear - ViewController2 
viewDidAppear - ViewController3 
viewWillDisappear - ViewController3 
viewDidAppear - ViewController1 

위 콘솔 print 문에서 볼 수 있듯이

는, ViewController2 어디 파괴되고 있지 않습니다 : 내가 무엇을 의미하는지 설명하기 위해 뷰 컨트롤러 라이프 사이클 이벤트를 기록. 논리적으로, 나는 VC3가 VC1로 되돌아 갈 때 ViewController3와 함께 파괴 될 것이라고 생각했다. 그러나 이것이 사실이 아니며, 가장 빠른 이유는 모달 뷰가 Swift에서 작동하는 방식이 복잡하기 때문입니다.

어떻게 해결할 수 있습니까? viewWillDisappear를 호출하려면 VC2가 필요합니다.

+0

는 VC1로 돌아 ** ** 언 와인드 SEGUE를 사용합니다. 참조 : http://stackoverflow.com/q/12561735/1630618 – vacawama

+0

고맙습니다! 긴장을 푸는 순간 나는 정확히 내가 찾던 것이었다. – user3161770

답변

0

신용으로 돌아 가기 위해 navigationController?.popViewControllerAnimated(true)을 수행 dismissViewControllerAnimated(true)를 사용하여 코드에서 프로그래밍 방식을 기각 할 필요가 ViewController3

.

ViewController3에서 ViewController1로 돌아갈 필요가있을 때 긴급 풀기을 구현해야했습니다. 나는이 자습서에 나와있는 단계에 따라 프로그래밍 방식으로 이런 짓을 :

https://www.andrewcbancroft.com/2015/12/18/working-with-unwind-segues-programmatically-in-swift/

0

나는 segue를 오해 할까봐 두려워합니다. segue에서 ViewController3에서 ViewController1까지 ViewController3 위에 스택하는 ViewController1의 다른 인스턴스를 만들면됩니다. 너 돌아 가지 않을거야.

ViewController1rootViewController을 보유한 UINavigationController을 사용해야합니다. segueViewController2이고 modalsegue ~ ViewController3 인 버튼을 누릅니다. 그런 다음 솔루션을 지적 vacawama하는 ViewController1

관련 문제