在 UICollectionViewCell 内的 UICollectionView 中平滑滚动
Posted
技术标签:
【中文标题】在 UICollectionViewCell 内的 UICollectionView 中平滑滚动【英文标题】:Smooth scrolling In UICollectionView inside UICollectionViewCell 【发布时间】:2014-11-17 11:24:40 【问题描述】:我在 UICollectionViewCell 中使用 UICollectionView。顶部 CollectionView 将沿垂直方向滚动(左 右),内部 CollectionView 将沿水平方向滚动(上 下)..
当我滚动 Top collectionView 时,从上到下滚动不流畅,因为 Inner CollectionView 滚动。
有什么方法可以从TopBottom平滑滚动顶部的CollectionView?
Top CollectionView 数据源方法
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellIdentifier = @"CellId";
CustomCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]
......
......
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
retrun 10;
**Within CustomCollectionViewCell Inner CollectionView Datasource**
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellIdentifier = @"CellId";
CustomCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]
......
......
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
retrun 10;
【问题讨论】:
内部集合视图的数据源放在哪里? 为内部UICollectionView维护单独的类,复杂度会降低并且可以轻松解决 【参考方案1】:如果将集合视图的委托和数据源放在主集合视图单元格中,则不会有任何问题。
如下:
集合视图单元格界面:
@interface GalleryCell()
<UICollectionViewDataSource, UICollectionViewDelegate>
NSArray *dataSourceArray;
@end
及实施:
@implementation GalleryCell
#pragma - datasources
// Defines the number of cells in a section of collection view
- (NSInteger)collectionView:(UICollectionView *)cv numberOfItemsInSection:(NSInteger)section;
return dataSourceArray.count;
// Defines the cells in the collection view
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
UICollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"cellId" forIndexPath:indexPath];
return cell;
@end
【讨论】:
我将内部 collectionview 委托和数据源方法放在主 UICollectionViewCell 类中。【参考方案2】:实际上您所做的是错误的方法,您使用UICollectionView
作为UICollectionViewCell
内的容器...滚动器找不到我必须滚动外部控件的对象,即您的根UICollectionView
或UICollectionView
内的 UICollectionViewCell
。如果你能弄清楚一些,你可以尝试一些其他的方法。或者如果你想出一些示例代码会很好。
【讨论】:
您可以在UICollectionView底部添加手势。以上是关于在 UICollectionViewCell 内的 UICollectionView 中平滑滚动的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式在特定 UICollectionViewCell 内的 TableView?
从 uiviewcontroller 操作 uicollectionviewcell 内的 uicollectionview
uiCollectionViewCell 内的 Uitableview
如何更改 UICollectionViewCell 内的 UILabel 的值?
Swift - 从 UICollectionViewCell 内的视图中删除约束
如何同步 UICollectionViewCell 内的 UITableView 之间的滚动(在 UICollectionViewController 内)