Swift:每个加载视图控制器的函数运行多次

Posted

技术标签:

【中文标题】Swift:每个加载视图控制器的函数运行多次【英文标题】:Swift: functions run several times per load viewcontroller 【发布时间】:2018-07-16 12:53:40 【问题描述】:

我在viewController.swift中使用下面的代码

func didReceiveNewSession(_ session: QBRTCSession, userInfo: [String : String]? = nil) 
    print("PLAY SESSION")

我打开应用程序,收到会话后我得到一个日志PLAY SESSION

但是,如果我打开应用程序并转到 viewControllerPage.swift 并再次返回 viewController.swift 并在接收会话之后我得到两个日志 PLAY SESSION

结果,如果我打开viewController.swift 7-8 次,接收会话后打印 7-8 PLAY SESSION

即使我每次都打开viewController.swift

,我也只想获得一次会话

我想要didReceiveNewSession 加载一次

【问题讨论】:

【参考方案1】:

这正是 viewDidload 和 viewDidAppear 的用途

override func viewDidLoad() 
    //insert the code you only want to run once here


override func viewDidAppear(_ animated: Bool)
    //insert the code you want to run every time you load the VC

您不想使用它们有什么特别的原因吗?或者,您可以使用 viewWillAppear() 而不是 viewDidAppear()

【讨论】:

以上是关于Swift:每个加载视图控制器的函数运行多次的主要内容,如果未能解决你的问题,请参考以下文章

swift didSelectRowAtIndexPath 可以多次调用

使用不同的变量异步多次运行某些代码

Swift - tableview 加载错误 - 可怕的 SIGBART

Swift:从其他视图控制器调用 PageViewController 中的函数

根视图控制器 Swift

如何使用视图控制器重新加载 tableview (swift)