0

我目前面临一个问题,当collectionView我的项目滚动离开屏幕并切换选定的单元格时,我会更改项目的顺序。目前它们被组织成垂直滚动(并排有两个项目):

在此处输入图像描述

这是我的- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath方法:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *identifier = @"FriendCell";
    FriendsCell *cell = (FriendsCell *)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    //Friend Object
    PFUser *friend = [self.friendsArray objectAtIndex:indexPath.item];
    cell.friendId = currentFriend.objectId;

    //Setup Cell
    if (!cell.isSelected) {
        cell.layer.backgroundColor = [UIColor whiteColor].CGColor;
    } else {
        cell.layer.backgroundColor = FlatGreen.CGColor;
    }

    //Set Profile Image
    if (!cell.profileImageView) {
        cell.profileImageView = [UIImageView new];
        cell.profileImageView.image = [UIImage imageNamed:@"ProfileImagePlaceholder"];
        [cell addSubview:cell.profileImageView];
    }

    //Set Username
    if (!cell.usernameLabel) {
        //Set Username Label
        cell.usernameLabel = [UILabel new];
        cell.usernameLabel.text = friend[@"username"];
        cell.usernameLabel.textColor = [UIColor lightGrayColor];
        [cell addSubview:cell.usernameLabel];

    } else {
        if (cell.isSelected) {
            cell.usernameLabel.textColor = [UIColor whiteColor];
        } else {
            cell.usernameLabel.textColor = [UIColor lightGrayColor];
        }
    }

    return cell;
}

didSelectItemAtIndexPath:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

//Determine the selected friend by using the indexPath
PFUser *selectedFriend = [self.friendsArray objectAtIndex:indexPath.item];

//Add the selected friend's objectId to our array
[self.friendsToAdd addObject:selectedFriend.objectId];

//Show Selected View
FriendsCell *currentCell = (FriendsCell *)[collectionView cellForItemAtIndexPath:indexPath];

//Animate
[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{

    //Update
    currentCell.layer.backgroundColor = FlatGreen.CGColor;
    currentCell.profileImageView.alpha = 0.0;
    currentCell.usernameLabel.textColor = [UIColor whiteColor];

} completion:nil];

} 

didDeselectItemAtIndexPath:

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {

    //Determine the selected friend by using the indexPath
    PFUser *deselectedFriend = [self.friendsArray objectAtIndex:indexPath.item];

    //Remove the deselected friend's objectId from our array
    [self.friendsToAdd removeObject:deselectedFriend.objectId];

    //Show Deselected View
    FriendsCell *currentCell = (FriendsCell *)[collectionView cellForItemAtIndexPath:indexPath];

    //Animate
    [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionTransitionFlipFromBottom animations:^{

        //Update Card
        currentCell.layer.backgroundColor = [UIColor whiteColor].CGColor;
        currentCell.profileImageView.alpha = 1.0;
        currentCell.usernameLabel.textColor = [UIColor lightGrayColor];

    } completion:nil];
}

如果有人能发现为什么会这样,我将不胜感激!

4

1 回答 1

-2

Try

dequeueReusableCellWithReuseIdentifier:nil
于 2015-10-31T11:10:20.693 回答