继续快速创建视图控制器的新实例

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 将我标记为正确答案,如果有帮助,请点赞,谢谢

以上是关于继续快速创建视图控制器的新实例的主要内容,如果未能解决你的问题,请参考以下文章

委托创建 ViewController 的新实例

如何重新创建弹出视图?

快速从另一个访问 Viewcontroller 的实例

在表格视图导航控制器之前添加快速视图控制器的推荐结构

SAPUI5 重用视图并创建新实例

为每个视图 iOS 创建单独的视图控制器?