【发布时间】:2014-08-01 10:19:08
【问题描述】:
我正在研究 UIPageViewController,我是这个概念的新手。我的要求是这样的,
我有四种布局,分别称为 L1、L2、L3 和 L4。所有的布局设计都是在同一个视图控制器中完成的,称为 JLayoutOneVc 我的功能就像杂志,所以向右/向前滑动我们看到新文章,在左/向后滑动我看到最后加载的文章。
- 在向右/向前滑动时,我会调用 API,它会为我提供数据,根据这些数据我决定要显示哪种布局
- 向右/向前滑动可以正常工作,并且可以完美显示数据,但向左/向后滑动不会显示最后加载的屏幕。
我的代码
// load previous Article
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
if ([self.cachedLayouts count] > 0) {
JLayoutOneVC *prev = (JLayoutOneVC *)[self.cachedLayouts lastObject];
//[prev setArticleDetailsRespDict:self.articleDetailsRespDict];
pageCount -= 1;
return prev;
}
JLayoutOneVC *prev = [self.storyboard instantiateViewControllerWithIdentifier:@"LayoutOneId"];
[prev setArticleDetailsRespDict:self.articleDetailsRespDict];
prev.articleDetailsRespDict = nil;
[prev.articleDetailsTable reloadData];
pageCount -= 1;
return prev;
}
// load next Article
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
JLayoutOneVC *next = (JLayoutOneVC *)[self.storyboard instantiateViewControllerWithIdentifier:@"LayoutOneId"];
[next setArticleDetailsRespDict:self.articleDetailsRespDict];
next.articleDetailsRespDict = nil;
[next.articleDetailsTable reloadData];
pageCount += 1;
return next;
}
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers
{
if([pendingViewControllers count]>0)
{
// Doing this for testing purpose
if (self.layout > 4) {
self.layout = 1;
} else {
self.layout += 1;
}
[self performSelector:@selector(getArticleDetailsFromServer:) withObject:nil afterDelay:1.0f];
}
}
我正在添加图片作为参考。
- 将此视为我的第一篇文章。
- 向右/向前滑动我看到了
- 这是第二篇文章。
- 现在,当我向后/向左滑动时,这就是我面临的问题。它不会加载最后一个 ViewController,而是显示新数据。
希望你们能帮助我。提前致谢。请在下面我的问题评论中提出任何疑问。
【问题讨论】:
标签: objective-c xcode ios7 uiviewcontroller uipageviewcontroller