1

我正在使用 UIPageViewController 在 iPhone/iPad 应用程序中显示一些页面。现在,当用户按下按钮时,我想转到某个随机页面;这里重要的是我想向正在浏览“几个”页面的用户“展示”。我确实在 Stackoverflow 中查找了几个答案并尝试了它们。能够模拟的最好的和唯一的事情是通过这个片段以编程方式打开“一个”页面(即用户看到一个页面翻页):

[self.pageViewController 
         setViewControllers:[NSArray arrayWithArray:array]  
   direction:UIPageViewControllerNavigationDirectionForward 
         animated:YES completion:nil];

现在,我想显示“几个”翻页;即表示用户在第 2 页;然后,当转到第 5 页时,目前它只显示一页,尽管第 2 页和第 5 页之间有“3”页。

我尝试引入具有周期性延迟的 NSTimer。计时器会转到一页,然后延迟,然后转到另一页,然后延迟(重复,例如,3 次),以便用户获得“几页”翻页的“效果”。

[NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(goToRandomPage) userInfo:nil repeats:NO];

但这只会显示“最后”一页。也就是说,假设计时器被触发一次以显示第 8 页,然后延迟 0.2,然后显示第 3 页,然后延迟 0.2,然后显示第 6 页。实际显示的内容(即用户看到的内容)又是只翻了一页,即最后一页(翻到第 6 页)。

有人可以帮忙吗?

4

1 回答 1

0

一种选择是动态设置array一次一页,并在completion块中尝试调用相同的setViewControllers方法。每次setViewControllers调用array对象时都应修改为仅具有下一页。Completion块应确保当前动画已完成,您可以开始下一个动画。completion一旦到达所需的页面,在块内添加一些条件检查以打破这一点。我还没有尝试过,但这应该会引导你走向正确的方向。

[self.pageViewController 
         setViewControllers:[NSArray arrayWithArray:array]  
   direction:UIPageViewControllerNavigationDirectionForward 
         animated:YES completion:^{/* call the same method and modify array */}];
于 2012-10-09T18:04:32.510 回答