UIView到目标C中的另一个视图

时间:2011-03-28 20:12:23

标签: iphone uiview

当我转到基于UIView的应用程序中的下一个视图支持时,我必须转到

secondView * = [[secondView alloc]initWithNibName:@"secondView" bundle:[NSBundle mainBundle]];
[UIView beginAnimations:@"ani" context:nil];
[UIView setAnimationDuration:0.9];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:NO];
[UIView commitAnimations];
[self.view addSubview:secondView.view];

我的问题是我无法释放第二个视图,因为我的对象在同一视图中被删除..如果我不能并转到第二个视图如何以及何时释放第二个视图对象以及在哪个视图中..因为我还必须从第二个视图返回到第一个视图...我写了后面的代码:

[self.View removefromsuperview]; // means this code is written on second View backbutton then its goto the firstView.. 

我想知道当我发布我在firstView中创建的secondView对象时...我不使用autorealease因为它非常糟糕......

我也认为可以在firstView dealloc类中释放secondView对象的一个​​解决方案..请帮帮我..

感谢。

1 个答案:

答案 0 :(得分:1)

您对initWithNibName.view的使用表明secondView是UIViewController子类的实例。如果是这种情况,那么你不应该将一个UIViewController的视图添加为另一个UIViewController视图的子视图。这样做是abusing UIViewControllers,会导致您的应用出现意外行为。

如果要管理视图之间的转换,您应该使用Apple提供的容器视图控制器之一来管理多个UIViewControllers,或者在单个UIViewController视图的子视图之间进行交换。 无论哪种方式,您的控制器都可以由管理视图之间转换的父控制器释放。例如,如果您使用的是UINavigationController,它可以在从导航堆栈弹出时释放控制器。如果您编写了自己的UIViewController来管理多个视图,每个视图可能都有一个非UIViewController控制器,那么当不再需要子视图时,您可以从该父视图控制器释放视图和它的控制器。让父对象管理他们的孩子。