继续快速创建视图控制器的新实例
Posted
技术标签:
【中文标题】继续快速创建视图控制器的新实例【英文标题】:segue creating new instance of view controller swift 【发布时间】:2017-04-16 23:16:40 【问题描述】:我有一个带有四个视图控制器的应用程序。 1、2 和 3 之间的导航很好,但是从视图控制器 1 你可以选择转到 2 或 4(这是我的设置)我有一个从 1 到 4 的转场。然后我使用展开转场返回.但是当我使用 segue 回到 4 时,它会实例化一个新的 4 实例。
我的问题:有什么方法可以访问用户上次使用的同一视图控制器实例。
【问题讨论】:
您可以保留对该视图控制器的引用并推送它而不是使用 segue,如果您使用的是导航控制器,您通常只需推送一个新实例,并根据需要进行配置 对不起,我是个新手,不知道你的意思。能不能详细解释一下 【参考方案1】:就像@Paul11 在 cmets 中所说的,如果您希望访问相同的实例,您应该保留尝试推送的UIViewController
的引用
举个例子
var someViewController = SomeViewController() // << this is at the class level scope
func someSampleFunc()
// doing this would create a new instance of the `SomeViewController` every time you push
self.navigationController?.pushViewController(SomeViewController(), animated: true)
// whereas if you use the variable which is at the class level scope the memory instance is kept
self.navigationController?.pushViewController(someViewController, animated: true)
另一个例子
class Bro
var name = "Some Name"
func sayDude()
// since `name` is a class level you can access him here
let dude = "DUUUUUUUDE" // this variable's lifetime only exists inside the `sayDude` function, therefore everytime you call `sayDude()` a new instance of `dude` is created
print(name)
print(dude)
func doBackflip()
sayDude() //
print(name + " does backflip") // since `name` is a class level you can access him here
【讨论】:
@c3pNoah 将我标记为正确答案,如果有帮助,请点赞,谢谢以上是关于继续快速创建视图控制器的新实例的主要内容,如果未能解决你的问题,请参考以下文章