UIPageController currentPage固执地将自己设置为nib值

时间:2013-10-24 09:56:31

标签: ios iphone objective-c xib uipagecontrol

我有一个UIPageController放在我的xib文件中,所以我可以正确放置,但是在xib中设置的“currentPage”的值是当我尝试设置它时currentPage假定的值到下面的其他东西,如下面的代码行,它在中间开始时将UIScrollView设置为正确的初始图像(即不是第0页):

aScrollView.contentOffset = CGPointMake((currentIndex + 0.0) * screenWidth, 0.0);

调用

-(void) scrollViewDidScroll: (UIScrollView*) aScrollView
{
    // Update the page control to match the current scroll:
    CGPoint offset = aScrollView.contentOffset;
    float width = self.view.frame.size.width;
    int pageNumber = (int)(offset.x / width);
    uiPageControl.currentPage = pageNumber;
    NSLog(@"%g // %g = %d", offset.x, width, (int)(offset.x/width));

}

pageNumber整数是正确的,所以我正在从偏移量中正确计算所需的页码。但是,当我尝试手动(以编程方式)设置currentPage时,它不会设置为pageNumber,而是设置为xib中的值。

简单的解决方案是不使用xib并以编程方式完成所有操作,但我想知道如何继续使用xib中的UIPageController,因为它很容易在不知道坐标等的情况下放置。通常,在xib中设置的属性是可编程覆盖的,所以这个bug真的让我感到惊讶。关于如何正确设置currentPage的任何建议?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我发现了一个暂时解决我的问题的黑客:在xib中,我将“页数”值设置为我知道的值将高于我将拥有的页数。

如果这个太小,事实证明设置currentPage超出该值没有做任何事情,因为它是钳位或将其设置为低于我在xib中的页数的某个数字。

如果我将此xib属性设置得更高,那么设置currentPage就可以了。

对不起快速触发。