29

如何以编程方式导航到特定页面。基本上我有一个带有滚动视图的应用程序,其中填充了一堆子视图(在本例中为 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;
}
4

3 回答 3

54

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

[scrollView setContentOffset:CGPointMake(scrollView.frame.size.width*i, 0.0f) animated:YES];
于 2010-11-15T13:57:43.817 回答
1

Swift 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() 位置。

于 2020-05-04T02:30:40.870 回答
0

Ole Begemann 上述答案的 Swift 5 版本

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

于 2020-03-25T13:01:46.910 回答