我想在viewDidLoad中从Core Data读取的UICollectionView中显示一些数据。但是,当UICollectionView呈现其单元格时,数据尚未完全加载。因此,UICollectionView为空。
我想问的是如何在UICollectionView开始加载其单元格之前确保数据准备就绪。以下是我正在处理的代码的一部分。
class MenuViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var categoryCollectionView: UICollectionView!
var allDishes = [AnyObject]()
var categoryList = [String]()
let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let request = NSFetchRequest(entityName: self.dishItemEntityName)
var allDishes = self.context?.executeFetchRequest(request, error: nil)
if let allDishes = allDishes {
for dish in self.allDishes {
let dish = dish as! DishItem
if contains(self.categoryList, dish.category) {
continue
} else {
self.categoryList.append(dish.category)
}
}
}
}
// MARK: Delegate Methods
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.categoryList.count
}
}
答案 0 :(得分:1)
viewDidLoad
之前调用 viewWillAppear
。您可以在reloadData
中的集合视图上调用viewWillAppear
。
更好:使用NSFetchedResultsController
,这将为内存管理,性能和自动更新带来许多其他好处。
答案 1 :(得分:0)
在viewDidLoad
的末尾调用 reloadData $parameters = array(
'app_id' => $facebook->getAppId(),
'to' => $facebookUserId,
'link' => 'http://google.nl/',
'redirect_uri' => 'http://my.app.url/callback'
);
$url = 'http://www.facebook.com/dialog/send?'.http_build_query($parameters);
echo '<script type="text/javascript">window.open('.json_encode($url).', ...