场景:我有一组对象。我希望在设备处于纵向模式时使用UITableView显示它们,当设备处于横向模式时使用UICollectionView显示它们。为此,我希望使用UIViewController作为容器,并为其提供两个子视图控制器( UICollectionViewController和UITableViewController各一个)。我预计方向会经常改变,导致父控制器在两个子控制器之间来回切换。
在iOS的视图控制器编程指南(2012-12-13)中,在第117页和第118页上,他们讨论了子级之间的转换,每当从视图层次结构中删除子级视图时,他们都会从父级中删除子级视图控制器。(具体参见清单14-3。)
这是出于内存或其他原因所必需的吗?或者,是否可以将两个子视图控制器都与父视图控制器相关联,并在视图之间来回切换?这两种技术都有性能优势吗?
发布于 2013-05-20 15:30:41
将两个视图控制器都作为子级是没有问题的,您只需要确保在它们之间共享适当的资源(即,没有两个要显示的对象副本),或者在显示和隐藏视图时释放它们。
在您的示例中,两个视图控制器显示相同的数据,因此我假设当您在这两个视图之间切换时,您将根据在另一个视图中发生的事情来更新滚动位置。如果是这种情况,那么将另一个视图控制器分配为子控制器并没有太多好处。它能保存的唯一一件事就是先前分配的单元格被缓存在视图中。因此,为了最有效地利用内存,您应该删除没有显示的视图控制器。这在运行时会花费更多一点,但应该不会引起注意。
https://stackoverflow.com/questions/16640229
复制相似问题