以编程方式导航到scrollView中的特定页面

时间:2010-11-15 13:55:09

标签: iphone uiscrollview uipagecontrol

如何以编程方式导航到特定页面。基本上我有一个带有scrollView的应用程序,其中填充了一堆子视图(在本例中为tableViews)。当点击子视图时,它会放大并且用户可以编辑和导航表,但是当我缩小时,我会重新加载整个视图,以防用户做出任何更改。当然重新加载视图会将用户发送回第0页。我已经尝试设置pageControl.currentpage属性,但所有这一切都改变了pageControl的点。这是否意味着某些事情是错误的,还是我还需要做其他事情?

控制页面滚动的所有方法都是这种方法:

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{
CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
self.pageControl.currentPage = page;

NSString *listName = [self.wishLists objectAtIndex:self.pageControl.currentPage];
self.labelListName.text = listName;
}

3 个答案:

答案 0 :(得分:48)

您必须手动计算相应的滚动位置。要滚动到第i页:

[scrollView setContentOffset:CGPointMake(scrollView.frame.size.width*i, 0.0f) animated:YES];

答案 1 :(得分:0)

Ole Begemann的上述答案的Swift 5版本

scrollView.setContentOffset( CGPoint(x: scrollView.frame.size.width * i, y: 0.0), animated: true)

答案 2 :(得分:0)

快捷键5 ,您可以轻松使用scrollView.scrollRectToVisible

如果实现了Horizontal分页滚动视图,其大小为默认view width of the device,并且想要导航到第n页,则:

scrollView.scrollRectToVisible(CGRect(x: self.view.center.x * n, y: self.view.center.y, width: self.view.frame.width, height: self.view.frame.height) ,animated: true)

您只需要根据滚动视图配置定义CGRect()位置。