Я написал код с swift4 и запущен на симуляторе iPhone.
DispatchQueue.main.async {
self.view.activityindicatorStop()
self.mytableView.reloadData()
}
Над кодом есть следующая операция
Индикатор остановки активности и обновление TableView
после заполнения данных массивом.
Но ожидаемого не происходит ..
Я получил следующее
- Индикатор активности остановлен, но индикатор не удален, а фоновый вид не удален.
TableView
не обновляется.
код, который я использовал:
super.viewDidLoad()
UserDefaults.lastAccessDate = Date()
self.view.activityStartAnimating(activityColor: #colorLiteral(red: 0.9176470588, green: 0.2901960784, blue: 0.262745098, alpha: 1), backgroundColor: #colorLiteral(red: 1, green: 1, blue: 1, alpha: 0))
//Calling the API
Capsulle.retriveSpaceTimeCapsulle { (data, respose, error) in
if nil == error
{
let ServerData = serverComm.toJSONObject(with: data!)
let result = ServerData.0 as? Array<Dictionary<String, Any>>
self.capsulleDetail = result
if (result == nil)
{
if false == loginCredential.isHavingAccessToken
{
loginCredential.isHavingAccessToken = false;
UserDefaults.standard.set( "", forKey: "UserEmailID")
let objStoryBoard:UIStoryboard = UIStoryboard.init(name: "Main", bundle: nil)
let initialViewController:UIViewController = objStoryBoard.instantiateViewController(withIdentifier: "loginVC")
self.present(initialViewController, animated: true, completion: {
})
return
}
}
DispatchQueue.main.sync {
self.CapsulleCollectionView.reloadData()
self.view.activityStopAnimating()
}
}
}
}
func activityStartAnimating(activityColor: UIColor, backgroundColor: UIColor) {
let backgroundView = UIView()
backgroundView.frame = CGRect.init(x: 0, y: 0, width: self.bounds.width, height: self.bounds.height)
backgroundView.backgroundColor = backgroundColor
backgroundView.tag = 475647
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
activityIndicator = UIActivityIndicatorView(frame: CGRect.init(x: 0, y: 0, width: 50, height: 50))
activityIndicator.center = self.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray
activityIndicator.color = activityColor
activityIndicator.startAnimating()
self.isUserInteractionEnabled = false
backgroundView.addSubview(activityIndicator)
self.addSubview(backgroundView)
}
func activityStopAnimating() {
if let background = self.viewWithTag(475647){
background.removeFromSuperview()
}
self.isUserInteractionEnabled = true
}
Я создал ActivityStopAnimating и ActivityStartAnimating как расширения