2017-08-29 45 views
1

我觉得我错过了一些东西,这不应该太难。 我正在阅读我应用程序中初始场景中的一些数据。 我有一个单身人士,我打电话viewDidLoadsingleton.getData()如何在使用tabcontroller时只读一次数据

此初始场景是选项卡控制器的一部分。虽然我认为viewDidLoad只会为每个场景调用一次,但我很确定它在应用生命周期中被调用了几次。

所以只是想知道是否有一种方法来确保函数调用来检索一些数据只发生一次。

+0

也许你可以显示你的单身代码和你的viewdidload – koropok

+0

你可以在你的应用程序委托instad中调用singleton.getData()。由于每次更改选项卡,每个视图都会调用viewDidLoad。所以如果你想避免它被多次调用,将其从视图相关的控制器中删除。 – andromedainiative

回答

2

viewDidLoad将在所选标签更改后被调用,您可以更改您拨打getData的地方。

如果你想在viewDidLoad中打电话getData,并确保它不会被多次调用,你可以创建一个标志并检查,如果它以前被调用过或没有。

class Singleton { 
    static let sharedInstance = Singleton() 
    private static var getDataCalled = false 

    func getData() { 
     if Singleton.getDataCalled { 
      return 
     } 
     Singleton.getDataCalled = true 

     // request data 
     print("data requested") 
    } 
} 


Singleton.sharedInstance.getData() 
Singleton.sharedInstance.getData() 

调用getData多次打印数据只请求一次。

相关问题