2013-08-16 2 views
3

아래 코드를 사용하여 addChildViewController으로보기를 추가하고 있습니다.addChildViewController를 사용할 때 dealloc이 호출되지 않습니다.

VideoListVC * videoListVC = [[VideoListVC alloc] initWithNibName:@"VideoListVC" bundle:nil]; 
UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:videoListVC]; 
navController.view.frame = self.view_Container.bounds; 
videoListVC.view.frame = navController.view.bounds; 

[self addChildViewController:navController]; 
[navController didMoveToParentViewController:self] 
[self.view_Container addSubview:navController.view]; 

self is MenuVC가있는 여러 개의 ViewControllerschildview로 추가. 나는 MenuVCpushViewController이라고 부르므로 MenuVC에있을 때 VideoListVC을 자식보기로 볼 수 있습니다. 내가 popViewControllerAnimated을 호출했을 때 메서드가 MenuVC뿐만 아니라 VideoListVC도 호출되지 않았습니다. 따라서 문제는 ViewController 메모리가 해제되지 않고 앱 메모리가 계속해서 증가합니다. 마지막으로 앱을 중단 할 때 앱이 계속 충돌합니다. 20 to 25 min.

해결 방법은 무엇입니까 ?? 나는 removeFromParentViewController을 시도했지만 어떤 성공도 얻지 못했습니다.

addChildViewController에 내 코드가 잘못 되었나요?

+0

마지막 주석을 잊어 버리십시오 : WTH is this ?: 'UINavigationController * navController = [[UINavigationController alloc] videoListVC];'? UINavigationController가이 메서드에 응답한다고 생각하지 않습니다. – Abizern

+0

@Abizern 예. 그건 내 실수 였어. 이제 이것을 보아라. 어떤 생각? – Hitarth

+0

(탐색 컨트롤을 하위보기 컨트롤러로 추가하는 대신 전체 화면을 차지하므로) 모달로 표시합니다. 'presentViewController : animated : completion :'로 제시하고'dismissViewControllerAnimated : completion :' – Abizern

답변

2

1) 두 번째 라인은 videoListVC가 initWithRootViewController 호출로 인해 유지 때문에, 마지막에 당신의 VideoListVC 및 navController을 해제해야합니다, 경우

UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:videoListVC]; 

2) 당신은 ARC를 사용하지 않는해야 addChildViewController로 인해 navController가 유지됩니다.

3) 나는이 중요 알고 있지만 childVC를 추가 할 때 애플의 View Controller Programming Guide for iOS의 14-1 나열하는 것은 다른 순서를 보여줍니다하지 않습니다이 도움이

[self addChildViewController:content];     // 1 
content.view.frame = [self frameForContentController]; // 2 
[self.view addSubview:self.currentClientView]; 
[content didMoveToParentViewController:self];   // 3 

희망.

+0

감사합니다. 나는 너의 방식대로 노력하고있다. ARC가 내 앱에 있습니다. – Hitarth

+0

나는 당신의 방법을 시도했지만 작동하지 않았다. – Hitarth

+0

완료. 참조 링크에서 "Topic : 사용자 정의 컨테이너보기 컨트롤러 구현"을 참조하십시오. 감사합니다 – Hitarth