隐藏某些布局中的UICollectionView项

时间:2015-05-15 18:13:18

标签: ios uicollectionview

我有UICollectionView根据用户偏好使用几种不同的布局。我希望某些单元格显示某些布局但不适用于其他布局。我该如何做到这一点?我是否真的需要重新加载集合视图数据?

1 个答案:

答案 0 :(得分:0)

完成此操作有两个步骤(也适用于UITableView)。

  1. 更新数据源。如果您使用的是NSDictionaryNSArray,则需要添加或删除要展示/隐藏的项目。

  2. reloadDataUICollectionView上致电UITableView。这就是它。

  3. 如果你想删除或添加动画,那就不一样了。中间还有一些方法需要调用,并确保更新顺序正确。但这完全是一个不同的问题。

    修改

    作为如何使用数组

    的示例
    - (void)methodCalledWhenLayoutChanges:(BOOL)includeOptionalString {
        if (includeOptionalString) {
            [_collectionViewDataSourceArray addObject:_optionalString];
        } else {
            [_collectionViewDataSourceArray removeObject:_optionalString];
        }
    
        [self.collectionView reloadData];
        }
    
    - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
        return 1;
    }
    
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
        return _collectionViewDataSourceArray.count;
    }
    
    // Never actually setup a collection view like this. This is just an example of how to reference a data source for creating a collection view cell.
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
        UICollectionViewCell *cell = [[UICollectionViewCell alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 50.0f, 50.0f)];
    
        UILabel *textLabel = [[UILabel alloc] initWithFrame:cell.bounds];
        textLabel.text = [_collectionViewDataSourceArray objectAtIndex:indexPath.row];
        [cell addSubview:textLabel];
    
        return cell;
    }