在 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 ID
在identity 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
在 UIImage 和 UIImageViews 中在 Swift 中释放内存