在 swift 中在 navigationStack 顶部重用相同的 viewController

Posted

技术标签:

【中文标题】在 swift 中在 navigationStack 顶部重用相同的 viewController【英文标题】:Reusing the same viewController on top of the navigationStack in swift 【发布时间】:2017-06-02 06:32:17 【问题描述】:

对于我的应用程序项目,我创建了一个 tableView 来显示葡萄酒,包括评分评论、品酒笔记和每个部分中的各种数据。在最后一节中,向用户展示了两种相似的葡萄酒,一旦被推送,其目的是重新使用当前的 viewController,并将其扔到导航堆栈上,因为用户可能会在该 viewController 中浏览另一种葡萄酒,依此类推。

你会怎么做,重用同一个 viewController。由于在故事板中构建无限数量的相同 viewController 对我来说似乎有点菜鸟。感谢所有帮助。

【问题讨论】:

【参考方案1】:

您可以使用Storyboards 并毫无问题地重复使用ViewController。 在Storyboard 中使用Storyboard IDidentity inspector 中,为ViewController 添加唯一ID。

之后就很简单了,你就可以以太了:

使用 segue 实例化第一级 viewController,而不是使用 UIStoryboard instantiateviewcontrollerwithidentifier: 添加另一个 ViewController(相同类型)并提供 ViewController 的唯一 id,然后显示它

你可以只使用UIStoryboard instantiateviewcontrollerwithidentifier: 每次你想展示ViewController

【讨论】:

这确实有效。但是segue行为很奇怪。一旦用户按了类似的酒,他们就会按照目的进行转场,但如果他们选择从新视图再次转场,则会显示两次转场动作,这个效果加起来是 2^n。你知道解决这个问题的方法吗?【参考方案2】:

如果你想使用故事板,有一个 hack(有点脏)。

    您应该将按钮添加到视图控制器。但不至于看 视图控制器,您应该将其添加到顶部(顶栏) 你的视图控制器。 然后从这个按钮添加 segue 到这个视图控制器。 现在您可以从代码中使用这个 segue (performSegue...)

【讨论】:

这确实有效。但是segue行为很奇怪。一旦用户按下类似的酒,他们就会按照目的进行转场,但如果他们选择从新视图再次转场,则会显示两次转场动作,这个效果加起来是 2^n。你知道解决这个问题的方法吗?

以上是关于在 swift 中在 navigationStack 顶部重用相同的 viewController的主要内容,如果未能解决你的问题,请参考以下文章

在 swift 中在 navigationStack 顶部重用相同的 viewController

在 Swift 中在 iOS 上显示 PDF [重复]

在 UIImage 和 UIImageViews 中在 Swift 中释放内存

在 Swift 5 中在其自己的初始值中使用的变量

如何在 swift 中在动态 TableView 中创建动态 tableView?

在 swift 3 中在圆形图像视图周围添加填充?