该项目目前有一个名为“Dashboard”的UIviewController,它充当所有应用程序的主视图。这个主视图由两个子视图组成,有点像分割视图。主(左视图)的左侧有多个按钮。右侧(右侧视图)将显示左侧选定按钮的内容。具有多个视图的UIViewcontroller
当按钮被按下它会创建一个要显示这样的观点的一个新实例:
vcMySchedule_iPad *vcSchedule = [[vcMySchedule_iPad alloc] initWithNibName:@"vcMySchedule_iPad" bundle:nil];
ncDashboard = [[UINavigationController alloc] initWithRootViewController:vcSchedule];
ncDashboard.navigationBar.barStyle = UIBarStyleBlackOpaque;
ncDashboard.view.frame = self.vwRightPanel.bounds;
[self.vwRightPanel addSubview:ncDashboard.view];
的事情是,按下另一个按钮时会显示另一种观点,但内存前一个视图的dealloc仍然保留,前一个视图的dealloc永远不会被调用。
我没有使用分割视图,因为左侧有一个按钮,当推送它时,它将左侧移动到左侧,右侧移动左侧以完全查看。
有没有办法呢?
一些图像更新...
主要(MainViewController):
压制课程目录:
vcCourseCatalog_iPad *vcCourse = [[vcCourseCatalog_iPad alloc] initWithNibName:@"vcCourseCatalog_iPad" bundle:nil];
ncDashboard = [[UINavigationController alloc] initWithRootViewController:vcCourse];
ncDashboard.navigationBar.barStyle = UIBarStyleBlackOpaque;
ncDashboard.view.frame = self.vwRightPanel.bounds;
[self.vwRightPanel addSubview:ncDashboard.view];
当选择行形成表它显示细节,如果用户按下按钮,视图显示为最大。
我想我可能一直在呼吁新的观点错了也许。物体在哪里发布?
我没有使用ARC。我使用名为“removeViewsFromRight”的主视图中的方法删除视图。由于用户可以按下左窗格中的任何按钮,我必须从主视图中删除视图。 – Angie
在这种情况下,它非常简单 - 正如我在1)中提到的那样,在创建它们之后,您不会释放它们。当您创建vcCourseCatalog_iPad时,它的保留计数为1.然后将它传递给UINavigationController,UINavigationController在内部存储对其的引用,将保留计数增加到两个。当涉及UINavigationController时,它释放vcCourseCatalog_iPad,给它一个保留计数1,你永远不会摆脱因为没有引用它。如果你自动释放vcCourseCatalog_iPad,那么它将被正确处理。 – CrimsonDiego
谢谢你的所有帮助。知道我理解得更好。 – Angie