2017-09-05 31 views
2

我有一个通用的UIViewController有多种用途。它可以被实例化为6种不同的方式,因为它被设计为非常通用的。让我们把这个多用途视图控制器称为MultiPurposeViewController。是否有可能推UINavigationContoller堆栈上UIViewController的2个单独的实例

Type1VC = MultiPurposeViewController()// initiated differently 
self.navigationController.push(Type1VC) 

内Type1VC:

Type2VC = MultiPurposeViewController()// initiated differently than before 
self.navigationController.push(Type2VC) 

是否允许做的操作与导航控制器?

编辑:

  • 会出现这样的操作造成任何内存问题?
  • 处理UINavigationController堆栈时允许这样的操作吗?
  • 有没有人遇到过将堆栈的多个实例堆叠到UINavigationController堆栈上而没有任何内存泄漏的情况?
+0

是的为什么不是,但它不是很好的做法 –

+0

有什么影响?是不是每个实例都调用一个单独的内存位置?对于这些问题抱歉,但我很想知道为什么这不是好的做法。感谢您的回应。 –

+0

是的,你可以推送单独的实例,而不会发生事故。不管你的'MultiPurposeViewController'是不是一个好的设计,(a)它可能是一个很好的方法,这取决于你正在解决的问题以及你如何实现它; (b)这里与这个问题无关; (c)我们没有足够的信息来决定;和(四)这可能是甚至不是这个问题的正确论坛(例如http://codereview.stackexchange.com是功能代码的代码审查的好场所)。 – Rob

回答

4

从苹果官方文件这显然是提及:

要实现导航界面,您必须在数据每个层次决定哪些数据 存在。对于每个级别,您必须提供内容视图控制器来管理和显示该级别的数据 。如果多级别的演示文稿相同,则您可以创建同一视图控制器类的多个实例,并配置每个实例来管理其自己的一组数据。例如, 照片应用程序有三种不同的呈现类型。

您可以通过以下阅读更多:https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html

希望这会给你关于你的问题,全面的了解。 随时发表评论。

+2

太棒了!因此,如果'MultiPurposeViewController'设计正确,它可以在多个级别重复使用,而不会有任何内存问题!谢谢。 –

+1

是的,如果它解决了您的问题,使其正确答案,以便其他开发人员从您的问题中获益。继续编码 –

相关问题