不稳定的UIPageControls

时间:2010-06-25 03:27:32

标签: iphone uipagecontrol

我在视图中使用两个UIPageControl来反映章节和页面。所以我定义了一个名为chapterCount的UIPageControl和一个名为pageCount的文件,以显示用户所在的位置。我使用滑动来处理页面的翻转,而不是使用UIPageControls(因此没有为它们定义方法)。

我在用户使用以下代码更改页面时更改其值:

chapterCount.numberOfPages = chapters;
chapterCount.currentPage = chapterNumber;

pageCount.numberOfPages = pages;
pageCount.currentPage = pageNumber;

[chapterCount updateCurrentPageDisplay];
[pageCount updateCurrentPageDisplay];

其中章节,chapterNumber,pages和pageNumber都是整数。

第一次翻阅页面时,它通常可以正常工作,但是当我转到上一章或开始新章节时,第一个(或最后一个取决于方向)点不显示。请看图片(上半部分缺少一个点,下部一个OK)。

alt text http://img80.imageshack.us/img80/3339/pagecontrol.png

更新控件的代码相同,有时我得到一个点,有时候没有。当我使用NSLOG检查变量时,它们是正确的(例如,对于上面两张图片都是相同的)。

我检查了Apple的文档并尝试了他们的示例,但没有运气。

我应该从哪里开始排查?我疯了!!

2 个答案:

答案 0 :(得分:5)

我终于找到了问题:-)

下次更新页面数量为0的UIPageControl将无法正确显示。我正在从一个数组中读取章节和页码,并且在开始时(让我们说这本书的封面)没有页面也没有章节要显示,所以我很乐意将这些设置为0.因为我不想更改源数据在我的数组中,我使用MAX(页面,1)作为numberOfPages,所以现在它的工作就像发条一样。

答案 1 :(得分:0)

你确定你的chapterCount和pageCount视图不是零吗?您可以全天拥有有效值,向nil发送的消息不会执行任何操作并返回nil。更改章节时,请仔细检查视图和控制器接线/无线。

编辑:

确认控件的大小足以容纳所有页面,并且不会剪切视图边界。例如,如果您有10个页面,并且“当前”页面为10,但只有9个点可见,则看起来好像没有突出显示任何内容,因为白色点将通过在可见区域之外从可见区域剪切界限。您可以使用以下方法动态调整大小:

- (CGSize)sizeForNumberOfPages:(NSInteger)pageCount