gpt4 book ai didi

ios - 在 swift 中实现加载微调器

转载 作者:行者123 更新时间:2023-11-28 13:32:11 26 4
gpt4 key购买 nike

当我在我的应用程序首次从关闭状态启动时进行一些网络调用时,我试图显示一个加载微调器。这些网络调用通常需要很短的时间,因为它们是对 json 字符串的 GET 和对它们的一些处理,但如果它们花费的时间比平时更长,我不希望我的用户在没有数据的情况下尝试在应用程序中进行操作需要在那里。因此,我试图在进行这些调用时显示一个微调器。但是微调器永远不会出现。在我更改很多东西之前,我已经可以正常工作了,但现在它又不能正常工作了,我终究无法弄清楚为什么。

这是我的 HomeViewController 中的 viewDidLoad() 方法,该信息从 API 中提取并加载到 CoreData 中。

override func viewDidLoad() {

super.viewDidLoad()
self.showSpinner(onView: self.view)
let teamsByConferenceNetworkManager = TeamsByConferenceNetworkManager()
teamsByConferenceNetworkManager.getTeamsByConference(completion: { (data, error) in
guard let data = data else {
os_log("Could not unwrap teamsByConference data in LoginViewController.viewDidLoad()", type: .debug)
self.removeSpinner()
let _ = UIAlertAction(title: "Network unavailable", style: .cancel, handler: { (alert) in
alert.isEnabled = true
})
return
}
let dataModelManager = DataModelManager.shared
DispatchQueue.main.sync {
dataModelManager.loadTeamNamesByConference(teamNamesByConferenceName: data)
dataModelManager.loadGamesFromCoreData()
}
if let _ = dataModelManager.allGames {
self.removeSpinner()
return
} else {
let gamesNetworkManager = GamesNetworkManager()
gamesNetworkManager.getGames { (data, error) in
guard let data = data else {
os_log("Could not unwrap games data in LoginViewController.viewDidLoad()", type: .debug)
self.removeSpinner()
let _ = UIAlertAction(title: "Network unavailable", style: .cancel, handler: { (alert) in
alert.isEnabled = true
})
return
}
DispatchQueue.main.sync {
dataModelManager.loadGames(gameApiResponses: data)
}
}
}

})
self.removeSpinner()

}

最佳答案

你需要删除它

                DispatchQueue.main.sync {
dataModelManager.loadGames(gameApiResponses: data)
}
}
}

})
self.removeSpinner(). <<<<<< this line

}

因为调用是异步的,您在使用 self.showSpinner(onView: self.view) 添加微调器后直接将其删除

关于ios - 在 swift 中实现加载微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57183908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com