打开视图时我希望动画启动,然后获取数据(下载),然后在下载完成后停止。如果下面的代码可行,那不是很好!嗯,它可能不是那么简单。
override func viewDidLoad() {
super.viewDidLoad()
activityIndicator.startAnimating()
getDataFromDatamanager()
activityIndicator.stopAnimating()
}
答案 0 :(得分:1)
看起来你运行得很好。您开始调用startAnimating()
方法。但是,您无需检查以确保getDataFromDatamanager()
完整。所以现在发生的事情是你的activityIndicator
动画并立即停止动画,因为你没有检查getDataFromDatamanager()
是否已经完成执行。您需要做的是为getDataFromDatamanager()
创建completion handler,在该完成处理程序中,您必须致电activityIndicator.stopAnimating()
此外,如果您需要帮助创建完成处理程序,Web上有许多教程。在没有更多代码存在的情况下,我无法真正帮助您创建完成处理程序。
修改强>
只是为我的答案添加更多信息。它启动并立即停止的原因是因为getDataFromDatamanager()
是异步,这意味着您的代码不会等待getDataFromDatamanager()
完成执行。 getDataFromDatamanager()
将在不同的线程上运行并跳过该行并立即调用stopAnimating()
,这就是为什么你必须检查getDataFromDatamanager()
完成执行的原因,其中一种方法是使用completionHandler
。