如何获取ios中某个部分的行数

时间:2014-08-02 11:50:00

标签: ios objective-c uicollectionview

我正在处理集合视图,我想要上一节中的行数。 是否有任何方法在部分返回行数。 请帮帮我。

2 个答案:

答案 0 :(得分:3)

可以手动调用您需要实现以显示单元格的UICollectionView dataSource的委托方法。

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

因此您可以使用以下方式调用它:

NSInteger numberOfRows = [self collectionView:self.collectionView numberOfItemsInSection:MAX(0, currentSection - 1)];

你不想得到越界异常,所以我把它限制在0 *

修改

@holex提出了一个非常好的观点 - 我假设你只有一个专栏。

如果您知道商品宽度的大小,则可以执行以下操作:

//Assuming a fixed width cell

NSInteger section = 0;
NSInteger totalItemsInSection = [self.feedCollectionView numberOfItemsInSection:section];

UIEdgeInsets collectionViewInset = self.feedCollectionView.collectionViewLayout.sectionInset;
CGFloat collectionViewWidth = CGRectGetWidth(self.feedCollectionView.frame) - collectionViewInset.left - collectionViewInset.right;
CGFloat cellWidth = [self.feedCollectionView.collectionViewLayout itemSize].width;
CGFloat cellSpacing = [self.feedCollectionView.collectionViewLayout minimumInteritemSpacing];

NSInteger totalItemsInRow = floor((CGFloat)collectionViewWidth / (cellWidth + cellSpacing));
NSInteger numberOfRows = ceil((CGFloat)totalItemsInSection / totalItemsInRow);

NSLog(@"%@", @(numberOfRows));

我们确定一行中会显示多少项,以便能够确定该部分中的行数。

答案 1 :(得分:1)

在collectionview中有两种方法,请注意该方法不在collectionview的委托中。

- (NSInteger)numberOfSections;
- (NSInteger)numberOfItemsInSection:(NSInteger)section;

你可以调用[self.collectionView numberOfSections];找到sectionCount。

你可以调用[self.collectionView numberOfItemsInSection:somesection];在某个部分找到行。