2017-03-14 9 views
2

UINavigationController에는 뷰 컨트롤러 1과 2가 두 개 있습니다. 1에서 2까지의 쇼 세그먼트와 하나의 프로그램 식 푸는 세그가 있습니다 (컨트롤 + 장면 뷰 컨트롤러에서 끌기). 아이콘에서 종료 아이콘까지)을 2에서 1로 변경하십시오.UIViewController가 스택에서 튀어 나오면 찾는 방법 Swift 3

2가 UINavigationController 스택을 갑자기 나타낼 때 어떻게 알 수 있습니까?

viewWillDisappear은 다른보기가 UINavigationController 스택에 푸시 될 때도 호출되므로 솔루션이 아닙니다. 난 answer on SO 대신 기본 버튼을 사용하기 전에 버튼을 만드는 제안을 봤어,하지만 UIViewController 때 스택을 갑자기 알게 사용할 수있는 시스템 메서드가 궁금 무엇입니까?

+0

왜 정확히 알고 있어야합니까? 다른 곳에서 볼 수있는 뭔가를 방아쇠를 당길 수는 없습니까? 그냥 컨텍스트를 얻으려고 애 쓰고 – agibson007

+0

@ agibson007 나는 시나리오를 더 간단하게 만들려고했지만, 나의 경우는 : 나는 UINavigationController에 9 개의 UIViewController를 가지고있다. 4 번째로 로그인 한 사용자는 8 번째로, 그렇지 않으면 5 번째로 이어집니다. 8 번째로 tableView가 있는데, row1이 segue를 9로, 그렇지 않으면 segue를 10으로합니다. 10 번째 버튼을 다시 누르면 (보기가 사라질 예정 임) 이전에 8 번째로 선택된 행을 기준으로 9 번째 또는 8 번째로 분할해야하는지 알 필요가 있습니다. 'viewWillDisapper'는 UINavigationController가 push되거나 pop 될 때 호출됩니다. 왜냐하면'isMovingFromParentViewController'와 함께 사용하면 제 경우에 효과가 있습니다. – bibscy

답변

2

viewWillDisappear과 (과) isMovingFromParentViewController을 함께 사용해야한다고 생각합니다. 이 접근 방식이 버그에 취약한 경우 저를 고쳐주십시오.

override func viewWillDisappear(_ animated : Bool) { 
    super.viewWillDisappear(animated) 

    if self.isMovingFromParentViewController{ 
     self.performSegue(withIdentifier: "fromEighthToFourth", sender: self) 
    } 
} 
+0

그건 당신이 터 졌음을 감지 할 수있는 올바른 방법이지만, 만약 내가 당신이라면 섹그를 수행하는 데 사용하지 않을 것입니다. 왜냐하면 당신은 중간에 이미 있기 때문입니다. – matt

+0

@matt 긴장을 풀기 전에 가장 좋은 방법은 무엇입니까? – bibscy