跳转到使用 UIPagecontrol 的滚动视图中的页面

Posted

技术标签:

【中文标题】跳转到使用 UIPagecontrol 的滚动视图中的页面【英文标题】:jump to pages in a scrollview that is using UIPagecontrol 【发布时间】:2013-06-21 07:30:06 【问题描述】:

我有 UIScrollview,其中包含不同的 UITableviews。您可以使用UIPagecontrol 滚动浏览这些UITableviews

这就是我将 UITableview 添加到 UIScrollview 的方式

- (void)loadPage:(NSInteger)page 
    if (page < 0 || page >= self.pageStages.count) 
        // If it's outside the range of what we have to display, then do nothing
        return;
    

    // Load an individual page, first seeing if we've already loaded it
    UIView *pageView = [self.pageViews objectAtIndex:page];
    if ((NSNull*)pageView == [NSNull null]) 
        CGRect frame = self.scrollView.bounds;
        //frame.size.width = 280.0f;
        frame.size.height = self.scrollView.bounds.size.height;

        float offset=20;
        frame.size.width = frame.size.width-(2*offset);
        frame.origin.x = (326 * page)+offset;
        frame.origin.y = 0;


        UITableView *tableStage = [[UITableView alloc]initWithFrame:frame];
        tableStage.backgroundColor = [UIColor colorWithRed:(250/255.0) green:(248/255.0) blue:(247/255.0) alpha:100];
        tableStage.contentMode = UIViewContentModeScaleAspectFit;
        tableStage.delegate = self;
        tableStage.dataSource = self;
        tableStage.tag = page;

        tableStage.contentMode = UIViewContentModeScaleAspectFit;
        [self.scrollView addSubview:tableStage];
        [self.pageViews replaceObjectAtIndex:page withObject:tableStage];
    

现在我希望该用户可以从另一个UIViewController 跳转到某个UITableview。因此我有一个变量pageNumber。当我设置 pageNumber 时,我调用了一个方法 jumpToPage3 并给出了 pageNumber。这就是函数的样子。

-(void)jumpToPage3:(NSNumber *)page
    NSLog(@"jump to page 3");
    float offset=30;
    float height = self.scrollView.bounds.size.height;
    float width = 320 - (2*offset);
    int pagee = [page intValue] - 1;
    float x  = (320 * pagee) + offset;
    [self.scrollView scrollRectToVisible:CGRectMake(x, 0, width , height) animated:NO];

问题是它没有跳转到正确的页面。它停留在第一页。

有人可以帮我解决这个问题吗?

【问题讨论】:

您的代码看起来不错。你在哪里调用这个方法跳转到page3?页面值是否正确? id pagee 为 0 滚动视图不会滚动 @Stef Geelen- 在 NSLog 中查看 "x" 的值......它是什么......? 这是我从 x 和 page 的日志中得到的信息 --> Page 是 2,x 是 670.000000 @AlexTerente 你能帮帮我吗? 你的 Scrollview 的 contentSize 是多少? 【参考方案1】:

当您向滚动视图添加内容时,您还必须告诉增加contentSize

【讨论】:

但我认为我的内容大小还可以吗?因为当我刚刚打开视图控制器时。我可以在表格视图之间滑动。只有当我跳转到一个页面时才会出现问题。 将硬编码值传递给 scrollRectToVisible:类似于 800,0,1,1 看看会发生什么。当您调用 jumpToPage3 时,您的滚动视图是否已分配并正确初始化?

以上是关于跳转到使用 UIPagecontrol 的滚动视图中的页面的主要内容,如果未能解决你的问题,请参考以下文章

如何连接 UIPageControl 使其与其他控件一起向上滚动?

是否可以循环 UIScrollView/UIPageControl?

UIPageViewController 的 UIPageControl 在滚动到下一个视图控制器时有时不会更新

如何通过颤动列表视图中的索引号滚动到索引?

在 Swift 中使用 UIPageViewController 直接跳转到特定页面

在 iPad 上具有多个可查看页面的 UIPageControl