我不知道这是否可行但是,我只是在满足某个条件时才尝试使用CollectionView cellForItem返回一个单元格。
这是我的功能:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FriendsRecentCell", for: indexPath) as! FriendsRecentCell
var fObj = PFObject(className: FRIENDS_CLASS_NAME)
fObj = recentArray[indexPath.row]
// Get User Pointer
let userPointer = fObj[FRIENDS_IS_FRIEND_WITH] as! PFUser
userPointer.fetchIfNeededInBackground(block: { (user, error) in
if error == nil {
// Get heys sent to you as currentUser
let query = PFQuery(className: HEYS_CLASS_NAME)
query.whereKey(HEYS_RECEIVER, equalTo: PFUser.current()!)
query.whereKey(HEYS_SENDER, equalTo: userPointer)
query.countObjectsInBackground { (count, error) in
if count != 0 {
// Get User fullname
cell.userLabelRecent.text = "\(userPointer[USER_FULLNAME]!)"
// Get Avatar
cell.avatarImageRecent.image = UIImage(named: "avatar")
cell.avatarImageRecent.layer.cornerRadius = cell.avatarImageRecent.bounds.size.width/2
let imageFile = userPointer[USER_AVATAR] as? PFFile
imageFile?.getDataInBackground(block: { (imageData, error) in
if error == nil {
if let imageData = imageData {
cell.avatarImageRecent.image = UIImage(data:imageData)
}}})
} else {
}}
}})
return cell
}
我只希望单元格返回if count != 0
。有没有办法去做这个?我完全迷失了。
答案 0 :(得分:0)
在调用此方法的时候,您已经告诉集合视图,该索引路径中存在一个单元格。既然你已经这样做了,你有来提供一个单元格;没有办法 - 方法签名是非可选的。
如果您只想在某些情况下显示单元格,则必须在此过程的早期处理它。调用collectionView(_:numberOfItemsInSection:)
时,您需要确定是否应显示单元格并返回正确数量的项目。然后你只会被问到这些细胞。