【问题标题】:How to read in data just the once when using a tabcontroller使用 tabcontroller 时如何只读取一次数据
【发布时间】:2017-08-29 19:39:31
【问题描述】:

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

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

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

【问题讨论】:

  • 也许你可以显示你的单例代码和你的 viewdidload
  • 你可以在你的应用委托中调用 singleton.getData() 。由于每次更改选项卡时,每个视图都会调用 viewDidLoad。因此,如果您想避免多次调用它,请将其从与视图相关的控制器中删除。

标签: ios swift uitabbarcontroller


【解决方案1】:

viewDidLoad会在选中的tab改变时调用,你可以改变你调用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 打印数据只请求一次。

【讨论】:

    猜你喜欢
    • 2020-05-08
    • 2021-07-29
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多