- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 stackoverflow 上看到过类似的问题(例如 here 和 here ),但没有一个有明确的答案。我关注了this tutorial但为我想要显示的每个页面创建了一个单独的 UIViewController 文件,其中包含它自己的 .xib 。第一次滑动时,viewControllerBeforeViewController
和 viewControllerAfterViewController
都会被调用。本教程使用这两种方法来递增或递减 pageIndex
。所以我最终看到的是 pageIndex
初始化为 0,然后在调用 viewControllerAfterViewController
时设置为 1,然后在 viewControllerBeforeViewController
调用时立即设置为 0叫。最终,这会导致页面显示不正确。
最佳答案
这是我解决这个问题的方法。
在每个页面 View Controller 中,我创建了一个名为 index
的 readonly
属性,我在其实现中将其指定为相关值(例如 1、2 或 3) )。然后我这样做了:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
NSInteger pageIndex = 0;
if ([viewController isKindOfClass:[MainMenuPage0ViewController class]]) {
MainMenuPage0ViewController *mainMenuPage0ViewController = (MainMenuPage0ViewController *)viewController;
pageIndex = mainMenuPage0ViewController.index;
pageIndex--;
} else if ([viewController isKindOfClass:[MainMenuPage1ViewController class]]) {
MainMenuPage1ViewController *mainMenuPage1ViewController = (MainMenuPage1ViewController *)viewController;
pageIndex = mainMenuPage1ViewController.index;
pageIndex--;
} else if ([viewController isKindOfClass:[MainMenuPage2ViewController class]]) {
MainMenuPage2ViewController *mainMenuPage2ViewController = (MainMenuPage2ViewController *)viewController;
pageIndex = mainMenuPage2ViewController.index;
pageIndex--;
}
if (pageIndex < 0) {
return nil;
}
return [self viewControllerAtIndex:pageIndex];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
NSInteger pageIndex = 0;
if ([viewController isKindOfClass:[MainMenuPage0ViewController class]]) {
MainMenuPage0ViewController *mainMenuPage0ViewController = (MainMenuPage0ViewController *)viewController;
pageIndex = mainMenuPage0ViewController.index;
pageIndex++;
} else if ([viewController isKindOfClass:[MainMenuPage1ViewController class]]) {
MainMenuPage1ViewController *mainMenuPage1ViewController = (MainMenuPage1ViewController *)viewController;
pageIndex = mainMenuPage1ViewController.index;
pageIndex++;
} else if ([viewController isKindOfClass:[MainMenuPage2ViewController class]]) {
MainMenuPage2ViewController *mainMenuPage2ViewController = (MainMenuPage2ViewController *)viewController;
pageIndex = mainMenuPage2ViewController.index;
pageIndex++;
}
if (pageIndex == 3) {
return nil;
}
return [self viewControllerAtIndex:pageIndex];
}
关于ios - UIPageViewController同时调用viewControllerBeforeViewController和viewControllerAfterViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24583114/
我设置了 UIPageViewController 的 dataSource 属性,但它的函数从未被调用,并且 View 是空的(黑色)。 如果我使用以下方法至少设置了第一页,一切正常,并且调用了数据
我已经在我的应用程序中实现了 UIPageViewController。 我已经实现了两个 delegate 方法,它们返回特定索引的 View 。 而且我还通过这些方法检测前向和后向。 - (U
我尝试在 UIPageViewController 中显示照片。首先,我在收藏 View 中显示我的照片,然后点击一张照片进入页面 View 。但是,当我在页面 View 中时,如果我滚动当前照片(向
我是一名优秀的程序员,十分优秀!