【发布时间】:2014-04-21 12:48:43
【问题描述】:
对不起我的英语:))
我使用 UIPageViewController 在页面之间导航。第一页是所有页面的目录。当我单击目录中的元素时,我尝试使用上述方法更改页面:
-(void) flipToPage:(int)index {
BaseArtViewController *pageViewController = [self viewControllerAtIndex:index];
NSArray *viewControllers = [NSArray arrayWithObjects:pageViewController, nil];
if (currentIndex < index){
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];
}
else if (currentIndex > index){
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:NULL];
}
// For change pageControl aspect
NSArray *subviews = self.pageController.view.subviews;
UIPageControl *thisControl = nil;
for (int i=0; i<[subviews count]; i++) {
if ([[subviews objectAtIndex:i] isKindOfClass:[UIPageControl class]]) {
thisControl = (UIPageControl *)[subviews objectAtIndex:i];
thisControl.currentPage = index;
}
}
}
它可以正常工作但不正确,目录和页面访问之间没有过渡。
当我到达点击的页面时,如果我尝试访问上一页,例如我在第 4 页,我想进入第 3 页,但我在第 0 页(目录)返回。你知道一个解决方案或有人可以解释我怎么做吗???
感谢您的帮助!
【问题讨论】:
-
如果您发布了 viewControllerBeforeViewController 和 viewControllerAfterViewController 方法会很有帮助。
-
1) 视图控制器页面的索引是否设置正确,所以它们返回 0 表示第一页,1 表示第二页,等等? 2) 方法 viewControllerAtIndex 是否实现为返回指定索引的正确视图控制器页面?此外,它看起来不像您正在初始化 currentIndex,我认为您应该在“if”语句之后将其设置为 FlipToPage 中的“index”。
-
每个索引都是正确的。方法
viewControllerAtIndex工作正常。属性currentIndex在viewDidLoad中定义,第一页的值为0。我试图更改flipToPage中的索引,但没有任何改变。当我第一次返回上一页时,我访问了目录页。如有必要,我可以发布完整的课程。 -
我认为到目前为止您发布的内容没有任何问题。我已经实现了非常相似的代码并且它工作正常。我可以直接移动到任何页面,然后从该点前后移动。
-
如果您发布创建视图控制器页面的代码,也许我可以找到问题。
标签: ios navigation uipageviewcontroller uipagecontrol