【发布时间】:2013-08-18 16:48:13
【问题描述】:
我正在使用下面的代码将视图添加为addChildViewController。
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 我将多个ViewControllers 添加为childview。我将MenuVC 称为pushViewController,所以当我在MenuVC 中时,我可以看到VideoListVC 作为子视图。当我调用popViewControllerAnimated 时,dealloc 方法未调用MenuVC 以及VideoListVC。所以问题是ViewController 内存没有释放,因此应用程序内存不断增加。最后,当我在应用程序周围不断20 to 25 min 时,应用程序崩溃了。
解决这个问题的方法是什么?我试过removeFromParentViewController,但没有成功。
addChildViewController 的代码有什么问题吗??
【问题讨论】:
-
忘记最后一条评论:这是?:
UINavigationController * navController = [[UINavigationController alloc] videoListVC];?我不相信 UINavigationController 会响应此方法。 -
@Abizern 是的。这是我的错。现在看到这个。有什么想法吗?
-
而不是将导航控制器添加为子视图控制器(因为它占据了整个屏幕)以模态方式显示它。使用
presentViewController:animated:completion:显示它并使用dismissViewControllerAnimated:completion:关闭它 -
@Abizern 我看起来像 Tabbar。在底部有 13 个菜单选项显示,如选项卡,它将是水平屏幕。当我点击每个项目时,新的视图控制器将在剩余的屏幕区域打开。所以我可以打开它“presentViewController:animated:completion”。
标签: iphone ios5 memory-management uiviewcontroller dealloc