从导航控制器中删除未显示的视图

Removing views from navigation controller that are not being shown

我有一个导航控制器来控制一堆视图。该应用程序是一个字母卡应用程序,您可以滚动浏览,因此页面很多。为了减少内存使用,我想从堆栈中删除未显示的视图。我想删除您从中推送的视图,以便下面的堆栈为空。我无法让它工作,所以需要一些帮助。我有下面的代码。这会减少内存吗?

func showCViewController() {
    let view4 = self.storyboard?.instantiateViewControllerWithIdentifier("CView") as! CViewController
    self.navigationController?.pushViewController(view4, animated: true)

    //My code that doesn't work
    let view5 = self.storyboard?.insViewControllerWithIdentifier("BView")
    self.view5.removeFromSuperview!()       
}

导航控制器被设计为堆栈。您只能在堆栈顶部添加或删除视图控制器 to/from。无法从顶视图控制器下移除视图控制器。

您需要不同样式的父视图控制器来执行您想要的操作。我建议查看 UIPageViewController。它可以像 iOS.

中的图片应用那样执行 iBooks 样式的页面卷曲过渡或横向滑动过渡。

创建您自己的具有自定义行为的父视图控制器也不难。在 iOS 6 中添加了对此的支持,并从那时起得到了扩展。