【发布时间】:2015-08-05 17:14:57
【问题描述】:
我有一个使用 Alamofire 从 Google Image Search API 检索图像并将它们显示在 collectionView 中的页面。一切正常,但是当请求仍在加载时,我根本无法与 UI 交互,无论是单击按钮还是滚动 collectionView。这是正常行为吗?如果请求需要很长时间,我希望用户至少能够按“后退”按钮,或者在处理新请求时向上和向下滚动 collectionView。
Alamofire.request(.GET, googleImageApiUrl, parameters: [:]).responseJSON { (request, response, JSON, error) in
if let results = JSON as? NSDictionary {
if let images = results["responseData"]!["results"] as? NSArray {
for image in images {
let url = NSURL(string: image["unescapedUrl"] as! String)!
if let data = NSData(contentsOfURL: url) {
self.imageData.append(data)
}
}
dispatch_async(dispatch_get_main_queue()) {
self.collectionView.reloadData()
}
}
}
}
总而言之,一旦发起请求,用户无法以任何方式与页面交互,直到 collectionView 重新加载其数据。我想如果请求是异步的,那么我仍然可以与 UI 交互。这是 Alamofire 限制、一般限制还是我做错了什么?
【问题讨论】:
标签: ios swift asynchronous uicollectionview alamofire