我有一個集合視圖。我從API中獲取一些數據,並在收藏視圖中顯示它。每件事情都很好。但是當我加載我的屏幕時 - 首先顯示我的屏幕,並且僅在5到6秒的延遲之後才填充數據在我的收藏視圖中。爲了解決這個問題,我做了一些dispatch main thread
來快速獲取數據。如何顯示活動指標直到數據獲取並顯示在我的收藏視圖中
但有些時候基於用戶電話的數據連接,數據顯示延遲。例如,如果用戶的數據連接速度較慢,則需要約30秒(假設)才能在我的收藏視圖中顯示數據。
所以,我需要的是 - 如何顯示活動指標 - 直到我的數據顯示在我的收藏視圖中。 我知道如何創建一個虛擬並顯示1到30秒。但我必須動態地做到這一點。
這意味着,我需要顯示活動指標,直到數據顯示在我的集合視圖中。它不應取決於用戶的數據連接速度。
如何實現這一目標?
這裏是我的代碼:
var BTdata = [BTData]()
override func viewDidLoad()
{
super.viewDidLoad()
ListBusinessTypes()
}
// Values from Api for Business Types
func ListBusinessTypes()
{
let token = NSUserDefaults.standardUserDefaults().valueForKey("access_token") as! String
let headers = ["x-access-token": token]
let request = NSMutableURLRequest(URL: NSURL(string: 「some url「)!,
cachePolicy: .UseProtocolCachePolicy,
timeoutInterval: 10.0)
request.HTTPMethod = "GET"
request.allHTTPHeaderFields = headers
let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
if (error != nil)
{
print(error)
let ErrorAlert = UIAlertController(title: "Error", message: "Problem with internet connectivity or server, please try after some time", preferredStyle: UIAlertControllerStyle.Alert)
// add an action (button)
ErrorAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
// show the alert
self.presentViewController(ErrorAlert, animated: true, completion: nil)
}
else
{
if let json = (try? NSJSONSerialization.JSONObjectWithData(data!, options: [])) as? Dictionary<String,AnyObject>
{
let success = json["success"] as? Int
if(success == 1)
{
if let typeValues = json["data"] as? [NSDictionary]
{
dispatch_async(dispatch_get_main_queue(),{
for item in typeValues
{
self.BTdata.append(BTData(json:item))
}
self.collectionView1!.reloadData()
})
}
}
else
{
let message = json["message"] as? String
let ServerAlert = UIAlertController(title: "Error", message: message, preferredStyle: UIAlertControllerStyle.Alert)
// add an action (button)
ServerAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
// show the alert
self.presentViewController(ServerAlert, animated: true, completion: nil)
}
}
}
})
dataTask.resume()
}
我需要將活動指示器顏色顯示爲紅色,並將背景視圖顯示爲白色。 – user5513630
在你的代碼中,我試圖改變,但它不會改變。如何改變顏色爲 – user5513630
兩種顏色?你什麼意思? – iOSMAn