func collectionView
class MoviesViewController: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UIScrollViewDelegate {
内部存在问题
此功能自动启动,我不想自动启动。或者在加载加载外部数据的函数时执行此操作。
这是我的结构代码ViewController.swift
class MyViewController: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UIScrollViewDelegate {
@IBOutlet var scrollView : UIScrollView!
@IBOutlet var collectionView1 : UICollectionView!
这是我希望在CollectionView
func loaddata(){
let url: NSURL = NSURL(string: "http://www.mywebsite/testdata.php")!
let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
let bodyData = "data=something"
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
(response, data, error) in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)!
}
}
override func viewDidLoad() {
super.viewDidLoad()
loaddata()
}
override func viewDidLayoutSubviews() {
self.scrollView!.contentSize = CGSizeMake(1920, 2200)
}
在这里,func CollectionView
自动启动
//this is function that load automatically
func collectionView(collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0.0, left: 50.0, bottom: 0.0, right: 50.0)
}
// this is function load automatically
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if (collectionView == self.collectionView1) {
let cell : FeaturedCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier(self.reuseIdentifierFeatured, forIndexPath: indexPath) as! FeaturedCollectionViewCell
let imageFilename = "featured-\(indexPath.row).jpg"
cell.featuredImage.image = UIImage(named: imageFilename)
return cell
}
return UICollectionViewCell()
}
如何在ViewController
之前保持loadData
开始?或者ViewController
在loadData
答案 0 :(得分:0)
当您还没有物品时,您不应该关心集合视图加载项目。可能发生的最坏情况是没有显示任何内容。
但是,当您的数据完成加载时,您应该调用collectionView.reloadData
来显示刚刚从服务器加载的数据。
如果您还不希望在数据仍然加载时显示集合视图,只需在完成处理程序中设置collectionView.hidden = true
然后collectionView.hidden = false
即可。您可能还应该显示活动指示符(例如UIActivityIndicator
实例)以通知用户数据仍在加载。
另外,我建议不要从viewDidLoad
加载数据。您应该使用viewDidAppear
。