답변

2

viewWillDisappear:animated:은 네비게이션 스택에서 팝되기 전에보기 컨트롤러에서 호출됩니다.

사용자가 내비게이션 컨트롤러에서 "뒤로"이동할 때해야 할 일은이 곳에서 할 수 있습니다. self.navigationController.viewControllers을 통해 스택에있는 다른 컨트롤러를 액세스 할 수 있습니다.이 컨트롤러는 현재 스택에있는 모든 뷰 컨트롤러의 배열이며 인덱스 0에 루트보기 컨트롤러가 있습니다.

+1

나는'viewWillDisappear :'에 문제가 있었고 관련 메소드는 항상'UINavigationController' 내에서 호출되는 것은 아닙니다. nav 컨트롤러의 델리게이트가'navigationController : willShowViewController : animated :'를 구현하고 어떤 뷰 컨트롤러가 보여지고 있는지에 대한 커스텀 메소드를 호출 할 것을 제안합니다. –

+0

탐색 컨트롤러 스택에 흥미 롭습니다. 그러나 예를 들어보기 컨트롤러의 인덱스 3을 말하고 인덱스 2로 돌아 가면 내가 만든 bool의 값이 손실 될 것입니까? 아니면 부모보기로 돌아가서 여전히 검색 할 수 있습니까? 또는 자녀가 아닌 부모 만 변수를 검색 할 수 있습니까? –

+1

위의 방법으로 상위 컨트롤러로 전달합니다. 또는 더 일반적입니다. 부모보기 컨트롤러가 새 컨트롤러가 수정 한 일종의 '세부'개체 (예 : 관리 대상 개체 또는 사전)를 전달했을 수 있으므로, 다시 아무것도 전달할 필요가 없습니다. – jrturton

2

보기 컨트롤러에 viewWillAppear, viewDidAppear, viewWillDisappearviewDidDisappear을 사용할 수 있습니다. 이는 UINavigationController과 별개로 작동합니다.

+0

내가 viewWillDisappear'에 문제가 있었다 :'와 항상'UINavigationController' 내에서 호출되지 않는 방법을 관련. nav 컨트롤러의 델리게이트가'navigationController : willShowViewController : animated :'를 구현하고 어떤 뷰 컨트롤러가 보여지고 있는지에 대한 커스텀 메소드를 호출 할 것을 제안합니다. –

관련 문제