在我的程序中,viewControllers之间的一些转换是通过以下代码以编程方式管理的:
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newViewController = storyBoard.instantiateViewController(withIdentifier: "NewViewController") as! NewViewController
self.present(newViewController, animated: true, completion: nil)
我一直在想这是多么安全的做法。当presentScene被调用时,它会做什么来“擦除”它下面的屏幕,还是只是在现有的视图之上堆叠更多视图?如果没有,它是如何工作的?这也是管理这种程序转换的最佳方式(在性能方面)吗?
答案 0 :(得分:1)
首先,除非UIStoaryboard
除了你有不同的名称,否则你不需要每次都创建Main
的对象。修改代码:
let newViewController = self.storyBoard!.instantiateViewController(withIdentifier: "NewViewController") as! NewViewController
现在回答你的问题!当您在另一个UIViewController
或UIViewController
上展示任何UINavigationController
时,呈现的控制器没有堆叠。
简而言之,您在主持人UIViewController
上提出了UIViewController
模式。这可以在没有任何关系规则的任何UIViewController
中发生。演示者应该注意解雇它所呈现的VC。
希望这可以解除你的怀疑。