【发布时间】:2014-11-08 23:15:44
【问题描述】:
我正在开发一个 iOS 应用程序,我使用 UIPageViewController 为该应用程序实现了一个演示之旅,在每个视图控制器上我显示一个图像和一个视频,但是方法
pageViewController:ViewControllerBeforeViewController
pageViewController:ViewControllerAfterViewController
无法正常工作,有时它会跳转到另一个页面,而不是下一个或上一个。如果我点击页面指示器 (UIPageControl),它只会在我使用滑动手势传递页面时才会发生。
我的代码:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger index = ((DemoTourViewController*) viewController).pageIndex;
if (index == NSNotFound)
return nil;
// If the current page is the first one then go back to the last one
if (index == 0)
index = [self.pageTitles count];
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger index = ((DemoTourViewController*) viewController).pageIndex;
if (index == NSNotFound)
return nil;
index++;
// If the current page is the last one then just start again (go in circle)
if (index == [self.pageTitles count])
index = 0;
return [self viewControllerAtIndex:index];
}
我在我的日志上打印了索引值,它仅代表我被解释过,即索引为 2,滑动后为 4(应该为 3),但在设备中显示第三页和第三张图像但可以t 播放第三个视频,只再现第四个视频的声音。当我点击页面控制指示器时,不会发生这种情况。
编辑
我的 PageViewcontroller 中还有其他方法
- (DemoTourViewController *)viewControllerAtIndex:(NSUInteger)index
{
if (([self.pageTitles count] == 0) || (index >= [self.pageTitles count])) {
return nil;
}
// Create a new view controller and pass suitable data.
DemoTourViewController *pageContentVC = [self.storyboard instantiateViewControllerWithIdentifier:@"DemoTourViewController"];
pageContentVC.imageFile = self.pageImages[index];
pageContentVC.titleText = self.pageTitles[index];
pageContentVC.pageIndex = index;
pageContentVC.videoPath = [[NSBundle mainBundle]pathForResource:self.pageVideos[index] ofType:@"mp4"];
pageContentVC.backgroundImgView.userInteractionEnabled = YES;
return pageContentVC;
}
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
return [self.pageTitles count];
}
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
return 0;
}
【问题讨论】:
-
该代码没有明显的问题 - 您能否发布一些其他代码:
viewControllerAtIndex:方法,以及 pageTitles 的填充方式。谢谢。 -
完成,希望你能帮助我 :) 谢谢@pbasdf
-
那里也看不到任何东西; PresentationIndex 显然是不正确的,但我认为这是您的问题所附带的。
-
谢谢@pbasdf,但我不知道如何解决。我遵循了一个教程来做这件事,显然我就是有这个问题的人
-
@pbasdf 应该返回什么presentationIndexForPageViewController:pageViewController??
标签: ios objective-c uipageviewcontroller