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

时间:2015-06-25 01:12:55

标签: ios swift uinavigationcontroller

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

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!()       
}

1 个答案:

答案 0 :(得分:0)

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

您需要使用不同风格的父视图控制器来执行您想要的操作。我建议看一下UIPageViewController。它可以执行iBooks样式的页面卷曲过渡,也可以像iOS中的图片应用程序那样进行滑动侧向过渡。

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