提问人:Tolibov Umid 提问时间:2/5/2021 最后编辑:Anbu.KarthikTolibov Umid 更新时间:2/5/2021 访问量:971
如何检测哪个UICollectionView滚动?
How detect which UICollectionView scrolled?
问:
我在一个控制器中有多个collectionView。其中一个在上面,第二个在底部。所以我的问题是如何检测哪个collectionView视图是滚动的?(在 Objective-c 中)为了检测滚动,我使用以下方法: - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 。但是在这种方法中,我无法检测到滚动了哪个collectionView。请帮助您提供建议。
答:
1赞
Dixit Akabari
2/5/2021
#1
在 Swift 中,您可以像这样检查:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if scrollView == topCollectionViewName {
print("Call Top CollectionView")
}else if scrollView == bottomCollectionViewName{
print("Call Bottom CollectionView")
}else{
print("call any other")
}
}
在目标 C 中,您可以像这样检查:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (scrollView == topCollectionViewName) {
NSLog(@"Call Top CollectionView");
}else if (scrollView == bottomCollectionViewName) {
NSLog(@"Call Bottom CollectionView");
}else{
NSLog(@"Call any other");
}
}
乐于帮助您:)
评论
0赞
Dixit Akabari
2/5/2021
@TolibovUmid 很乐意帮助你。如果这个答案符合您的问题,那么请标记为正确答案,这样它可能对功能中的其他人有所帮助。
1赞
aiwiguna
2/5/2021
#2
UICollectionView 是 UIScrollView 的子类,因此您可以对其进行比较
https://developer.apple.com/documentation/uikit/uicollectionview
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (scrollView == collectionViewOne) {
}else if (scrollView == collectionViewTwo) {
}else{
//something else
}
}
1赞
udbhateja
2/5/2021
#3
创建 collectionView 的出口。
@IBOutlet weak var topCollectionView: UICollectionView!
@IBOutlet weak var bottomCollectionView: UICollectionView!
在 scrollView Delegate 方法中:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (scrollView == topCollectionView) {
}
else if (scrollView == bottomCollectionView) {
}
}
这将起作用,因为 UICollectionView 是 UIScrollView 的子类。
0赞
Shivam Parmar
2/5/2021
#4
// create outlets of both collectionview
@IBOutlet weak var collectionViewA: UICollectionView!
@IBOutlet weak var collectionVieB: UICollectionView!
// add delegate method to detect scroll of collectionview
// for swift
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if collectionView == collectionViewA{
// collectionviewA was scrolled
}else{
// collectionviewB was scrolled
}
}
// same deleagte for objc
- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {
// compare both collectionview here like upper swift method
}
评论