2

场景:我有一组对象。当设备处于纵向模式时,我希望使用 UITableView 显示它们,而当设备处于横向模式时,我希望在 UICollectionView 中显示它们。为此,我想使用 UIViewController 作为容器,并为其提供两个子视图控制器(UICollectionViewController 和 UITableViewController 各一个)。我希望方向经常改变,导致父级在两个子控制器之间来回交换。

在 iOS 的 View Controller Programming Guide (2012-12-13) 中,在第 117 和 118 页上,他们正在讨论子级之间的转换,每当子级视图从视图层次结构中删除时,它们都会从父级中删除子视图控制器. (具体参见示例 14-3。)

这是出于内存或其他任何原因所必需的,还是可以将两个子视图控制器与父视图控制器保持关联,并在视图之间来回翻转?这两种技术都有性能优势吗?

4

1 回答 1

4

将两个视图控制器都作为子级没有问题,您只需要确保在它们之间共享适当的资源(即没有要显示的对象的 2 个副本)或在显示和隐藏视图时释放。

在您的情况下,两个视图控制器显示相同的数据,因此我假设当您在两者之间切换时,您将根据另一个视图中发生的情况更新滚动位置。如果是这种情况,那么将另一个视图控制器分配为子级并没有太多好处。它唯一会保存的是缓存在视图中的先前分配的单元格。因此,为了获得最大的内存效率,您应该删除未显示的视图控制器。这在运行时会花费更多,但不应该引起注意。

于 2013-05-20T07:30:40.710 回答