【问题标题】:Is it possible to push 2 separate instances of a UIViewController on a UINavigationContoller stack是否可以在 UINavigationContoller 堆栈上推送 2 个单独的 UIViewController 实例
【发布时间】:2017-09-05 19:31:10
【问题描述】:

我有一个具有多种用途的通用 UIViewController。它可以以 6 种不同的方式实例化,因为它被设计为非常通用。让我们将这个多用途视图控制器称为 MultiPurposeViewController。

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

Type1VC 内部:

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

是否允许使用导航控制器进行操作?

编辑:

  • 这样的操作会导致内存问题吗?
  • 在处理UINavigationController堆栈时允许这样的操作吗?
  • 有没有人遇到过这样的场景:将同一个UIViewContoller 的多个实例堆叠到UINavigationController 堆栈上而没有任何内存泄漏?

【问题讨论】:

  • 是的,为什么不呢,但这不是一个好习惯
  • 有什么影响?不是每个实例都调用一个单独的内存位置吗?很抱歉这些问题,但我很想知道为什么这不是一个好习惯。感谢您的回复。
  • 是的,您可以毫无意外地推送单独的实例。关于您的MultiPurposeViewController 是否是一个好的设计,(a)它很可能是一个很好的方法,这取决于您正在解决的问题以及您如何实现它; (b) 这里与这个问题无关; (c) 我们这里没有足够的信息来决定;并且 (d) 这可能甚至不是该问题的正确论坛(例如,codereview.stackexchange.com 是对功能代码进行代码审查的好地方)。
  • 这个问题有什么意义?你试过按照你的要求做吗?它奏效了吗?你在这里处理什么问题?
  • @rmaddy 这个问题是想看看是否有人遇到过这样的情况:将相同UIViewController 的不同实例堆叠到UINavigationController 堆栈上而没有任何内存问题。感谢您一如既往的回复。

标签: ios swift uiviewcontroller uinavigationcontroller


【解决方案1】:

从官方 Apple Doc 中明确提及:

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

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

希望这能让您全面了解您的问题。 欢迎发表评论。

【讨论】:

  • 太棒了!因此,如果MultiPurposeViewController 设计正确,它可以在多个级别重复使用,而不会出现任何内存问题!谢谢。
  • 是的,如果它解决了您的问题,请给出正确答案,以便其他开发人员从您的问题中受益。继续编码
猜你喜欢
  • 2017-06-21
  • 2011-09-06
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 2021-12-21
  • 1970-01-01
相关资源
最近更新 更多