2012-09-04 2 views
0

iOS Navigation 컨트롤러 앱에서 작업 중이며 의심의 여지가 있습니다. 나는 그것을 어디에서도 발견 할 수 없었다. 내가 네비게이션 컨트롤러를 만들고 여러 개의 다른보기 컨트롤러를 사용하여 네비게이션을 할 때,이 뷰 컨트롤러가 정확히 메모리에 저장되어 있고 네비게이션 컨트롤러가 뒤로 컨트롤러를 탐색 할 수있는 방법 등이 있습니다.iOS : 네비게이션 컨트롤러가 메모리에 있습니다.

감사합니다.

답변

1

개념은 스택처럼 간단합니다. 당신은 객체를 밀어 넣고 U도 팝업 할 수 있습니다. 당신은 u는 u는 기존의 컨트롤러를 확인할 수 있습니다 [navigationController viewControllers];

를 사용하여 액세스 할 수 있습니다 (의 ViewController 여기) viewControllers의 스택 객체 밀어

[navigationController pushViewController:viewController animated:YES]; 

사용할 때 :

NSLog("view controllers %@", [navigationController viewControllers]);

을 viewControllers는 모든 객체를 밀어 넣은 NSArray입니다. 특정 컨트롤러에 대한 참조가 항상 존재하므로 어떤 뷰 컨트롤러로도 이동할 수 있습니다.

뒤로 버튼을 클릭하면 topViewController이 배열에서 튀어 나옵니다. popToRootViewController은 viewController 배열에 추가 된 첫 번째 컨트롤러를 나타냅니다. u는 또한

[self.navigationController popToViewController: animated:]; 

u는있는 NSArray (viewControllers)에서 매개 변수를 전달할 필요가 이미 언급 사용하여 어레이의 특정 컨트롤러에 다시 팝업 수

예 :

[self.navigationController popToViewController:[[navigationController viewControllers] objectAtIndex:1] animated:YES]; 

는 도움이되기를 바랍니다 . 행복한 코딩 :)

1

UINavigationController는 다른 뷰 컨트롤러를 저장합니다. 보기 컨트롤러를 표시 할 때 내비게이션 컨트롤러에 밀어 넣습니다.

이렇게하면 탐색 컨트롤러는보기 컨트롤러에 대한 참조를 유지하므로 해제되지 않습니다. 마찬가지로 뷰 컨트롤러를 팝업하여 이전 컨트롤러를 표시합니다. 이 시점에서 현재 뷰 컨트롤러에 대한 참조가 해제됩니다. 보기 컨트롤러가 해제되지는 않더라도 평소처럼 언로드되고 다시로드 될 수 있습니다.

관련 문제