2011-04-29 64 views
0

我想实现视图转换,而不使用pushviewController机制等导航控制器。所以,我创建了如下的视图层次结构。 窗口是superview并包含三个子视图。在不使用导航控制器的情况下查看转换?

[window] - aViewController - bViewController - cViewController 

如果我想回去aVewiController从cViewController,我只需再次像这样分配aViewController:[[aViewController alloc] init]

然后,经过4次循环后,我得到didReceiveMemoryWarning和“Program exited with status value:0”消息。它明显的内存问题,但没有内存泄漏。反复分配viewcontroller是一个问题。在这种情况下,我不知道如何转换视图。

回答

0

您应该分配他们只有一次和意见本身通过隐藏之间过渡/取消隐藏它们:

viewController.view.hidden = YES/NO;

0

您需要确保在将对象添加到其超级视图后释放对象。并确保您将它们从超级视图中删除时,它们被发送到屏幕上......

如果要重用该对象,则可以将它们保留在列表中,并尝试像列表视图一样将它们取出。这样你就不必每次重制它们。

如果您将它们添加到子视图并且永远不要删除它们。那么您将拥有多个不再使用的视图,这些视图仍然被超级视图引用。因此他们仍然会记忆中。

1

如果你希望你的UIViewControllers的层次表现,因为他们在UINavigationController的情况下,你应该

A)显示做新的ViewController使用该调用

//This code should be implemented in viewControllerA 
[self presentModalViewController:viewControllerB animated:YES] 

B)退一万步通过调用

//This code should be implemented in viewControllerA 
[self dismissModalViewControllerAnimated:YES] 

备注:你会告诉viewControllerA你想关闭viewControllerB的方式是发送一个NSNotification。关于这一点的好处是,如果你想从viewControllerC到viewControllerA,你只需发送一个通知给viewControlerA去dissmisModalViewController,它会递归地关闭viewControllerC和viewControllerB给你。

希望这会有所帮助

相关问题