我有UICollectionView
根据用户偏好使用几种不同的布局。我希望某些单元格显示某些布局但不适用于其他布局。我该如何做到这一点?我是否真的需要重新加载集合视图数据?
答案 0 :(得分:0)
完成此操作有两个步骤(也适用于UITableView
)。
更新数据源。如果您使用的是NSDictionary
或NSArray
,则需要添加或删除要展示/隐藏的项目。
在reloadData
或UICollectionView
上致电UITableView
。这就是它。
如果你想删除或添加动画,那就不一样了。中间还有一些方法需要调用,并确保更新顺序正确。但这完全是一个不同的问题。
修改强>:
作为如何使用数组
的示例- (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;
}