2012-01-25 2 views
1

모달 세구 (imgue segue)를 사용하여 하나의보기 컨트롤러에서 또 다른보기 컨트롤러로 전환합니다. UINavigationController. 이 뷰 컨트롤러 (및 하위 뷰 컨트롤러)가 메모리에 남아있어 특정 참조가 유지된다는 것이 중요합니다. 분명히 이것은 정확히 일어나지 않지만. viewWillAppear 함수를 디버깅 할 때 rootViewController (viewControllers [0]) 참조는 호출간에 다른 메모리 주소를 가리키며 (실제로 실제 문제는없는 값을 포함합니다). 지금이이 문제의 원인이 두 가지 가능성 다음은 UINavigationController가 모달 쎄그는 새로운 객체를 생성합니까?

파괴되었다하지만 정말 혼란하게

  • rootViewController를 파괴되었다

    • , 그들 중 누구도 일어나지 않았다을; UINavigationController도 rootViewController도 파괴되지 않았습니다 (viewDidUnload가 호출되지 않았습니다!).

      편집 : UINavigationController가 모든 모달 구획에 대해 실제로 재생성되었음을 발견했습니다. 재산을 유지함으로써 문제를 해결할 수 있기를 바랍니다.

  • 답변

    0

    마지막으로 컨트롤러를 수동으로 제시하는 자체 IBAction 기능을 만들어 냈습니다. 이것은 정상적으로 작동하며 5 분 이내에 코딩됩니다. 스토리 보드에서 ViewDidLoad에 컨트롤러를 한 번만 초기화하면됩니다.

    0

    기본보기 컨트롤러에서 강력한 참조를 만들고 새보기 컨트롤러가 해당 속성을 가리 키도록하십시오. 이렇게하면 필요에 따라 뷰를 유지할 수 있지만 n 개의 뷰에는 권장되지 않지만 자체 생성 및 뷰 제거를 처리하는 탐색 컨트롤러의 목적을 상쇄하므로 뷰가 n 개가 아닌 것이 좋습니다.