ios - 使用 tabcontroller 时如何只读取一次数据

标签 ios swift uitabbarcontroller

我觉得我错过了什么,这不应该太难。 我正在我的应用程序的初始场景中读取一些数据。 我有一个单例,我在 viewDidLoad 中调用 singleton.getData()

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

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

最佳答案

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 打印仅请求一次的数据。

关于ios - 使用 tabcontroller 时如何只读取一次数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45935383/

相关文章:

objective-c - tabBarController 和第一个 Tab viewDidLoad

ios - 如何防止源 View Controller 在推送后消失?

swift - UINavigationController(rootViewController : MyViewController()) triggers viewdidLoad and returns nil navigationController

ios - Alamofire objectmapper 的 Xcode 10 更新问题

ios - 我怎么知道 Tab Bar Controller 索引是否以编程方式快速更改?

iOs:当有超过 5 个选项卡时如何更改 "more"后退按钮的颜色

ios - Swift 4 : UIView Subclassing, 获取父 View

iphone - 检查字符串是否与数组中的任何值匹配?

ios - 地点选择器未加载

swift - UITabBarController.selectedIndex 崩溃