我正在研究UIPageViewController,我是这个概念的新手。我的要求是这样的,
我有四种布局称为L1,L2,L3和L4。所有的布局设计都在同一个视图控制器中调用 JLayoutOneVc 我的功能就像杂志所以在右/向前滑动我们看到新文章,在左/后滑动我看到最后加载的文章。
我的代码
// 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];
}
}
作为参考,我正在添加图片。
希望你们能帮助我。提前致谢。请在下面的问题评论中留下任何疑问。
答案 0 :(得分:0)
我不知道你为什么要做检查
if ([self.cachedLayouts count] > 0) {
您的验证应基于pageCount:
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
if (pageCount > 0) {
pageCount -= 1;
JLayoutOneVC *prev = [self.storyboard instantiateViewControllerWithIdentifier:@"LayoutOneId"];
// I'm not sure how setArticleDetailsRespDict get the data, the best way would be get the data base on index, in this example pageCount
[prev setArticleDetailsRespDict:self.articleDetailsRespDict];
prev.articleDetailsRespDict = nil;
[prev.articleDetailsTable reloadData];
return prev;
}
}
另一种方法viewControllerAfterViewController:
也应检查pageCount值:
if (pageCount < MAXPAGECOUNT) {
好的方法是添加到自定义视图控制器(JLayoutOneVC)属性,例如索引,在这两种方法中,您都可以获取此值并增加/减少它(取决于方法)。之后,您可以获取该索引的数据库并重新加载视图。