0

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

当用户使用以下代码更改页面时,我会更改它们的值:

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

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

[chapterCount updateCurrentPageDisplay];
[pageCount updateCurrentPageDisplay];

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

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

替代文字 http://img80.imageshack.us/img80/3339/pagecontrol.png

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

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

我应该从哪里开始故障排除?我要疯了!!

4

2 回答 2

5

我终于找到了问题:-)

为页面数指定值为 0 的 UIPageControl 将不会在下次更新时正确显示。我从一个数组中读取章节和页码,一开始(假设是书的封面)没有页面也没有要显示的章节,所以我很高兴地将它们设置为 0。因为我不想更改源数据在我的数组中,我将 MAX(pages , 1) 用于 numberOfPages,所以现在它像发条一样工作。

于 2010-06-29T10:42:32.937 回答
0

您确定您的 chapterCount 和 pageCount 视图不为零吗?您可以整天拥有有效值,一条消息nil什么都不做并返回nil。更改章节时,请仔细检查您的视图和控制器接线/取消接线。

编辑:

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

- (CGSize)sizeForNumberOfPages:(NSInteger)pageCount
于 2010-06-25T03:33:02.307 回答