我已经查看了有关该主题的各种SO问题,但我还没有找到解决方案。我有UIViewController
UITableView
和UICollectionView
。当用户点击它时,我希望UICollectionView
滚动到顶部。
文档说如果你有多个UiScrollView子类 - 你需要将它们设置为no并且你想要滚动到顶部的UiScrollView为yes。
所以我写了这段代码来浏览我的所有观点:
for (UIScrollView *view in self.view.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
view.scrollsToTop = NO;
}
}
self.collectionView.scrollsToTop = YES;
这样我确定UiScrollView的任何子类都将它的scrollsToTop属性设置为no。
但是,点击状态栏不会执行任何操作。
有人可以告诉我这里缺少什么吗?
谢谢
答案 0 :(得分:9)
您似乎只是在遍历主视图的子视图。您的UITableView可能嵌套在另一个视图中。尝试执行以下操作;
//in view did load
[self setScrollToTopFalse:self.view];
self.collectionView.scrollsToTop = YES;
-(void)setScrollToTopFalse:(UIView *)v
{
for (UIView * v1 in [v subviews]) {
if ([[v1 class]isSubclassOfClass:[UIScrollView class]]) {
((UIScrollView *)v1).scrollsToTop = NO;
}
[self setScrollToTopFalse:v1];
}
}