5

だから私は現在、セルを UICollectionView に追加するボタンがあり、最後のセル (つまり、UICollectionView の下部) に自動的にスクロールする必要があるプロジェクトに取り組んでいます。

その方法を見つけました scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated

indexPathしかし今、CollectionView の最後のオブジェクトを見つけようとして行き詰まっています。

問題は、UICollectionView のセルを配列として考えようとしていることにあるようです (それらを列挙できない、応答しないlastObjectなど)。私が得ることができる最も近いのは、配列を提供するメソッドですvisibleItemsが、可視フレームの外側に追加されたセルが必要な場合には役に立ちません。

CollectionView の最後のオブジェクトの IndexPath を取得する方法はありますか?

4

5 に答える 5

15

データソースに尋ねることができます:

NSInteger section = [self numberOfSectionsInCollectionView:self.collectionView] - 1;
NSInteger item = [self collectionView:self.collectionView numberOfItemsInSection:section] - 1;
NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:item inSection:section];
于 2013-06-07T01:21:41.000 に答える
2

これがあなたの答えです...データソースに尋ねたくない場合。

メソッドに追加しますviewDidAppear:

NSInteger section = [_collectionView numberOfSections] - 1 ;
NSInteger item = [_collectionView numberOfItemsInSection:section] - 1 ;
NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:item inSection:section] ;
[_collectionView scrollToItemAtIndexPath:lastIndexPath atScrollPosition:(UICollectionViewScrollPositionBottom) animated:YES];
于 2015-01-28T07:23:29.200 に答える
0

データに問題が発生し、テーブル/コレクション ビューに行がない場合に備えて、一番下までスクロールするオプションがあるかどうかを最初に確認します。

func scrollToBottomIfPossible() {

    guard self.myRows.count > 0 else {
            return
    }

    self.collectionView.scrollToItem(at: IndexPath(row: yourItems.count - 1, section: mySections.count), at: .bottom, animated: true)
}
于 2018-10-10T10:45:32.643 に答える