UIPageViewController跳跃切换的问题 - 静如树

使用的是XHScrollMenu和UIPageViewController来构建5个页面:

ViewController1, ViewController2, ViewController3, ViewController4, ViewController5。

XHScrollMenu和UIPageViewController左右滑动均可以控制页面的切换。

一般情况下是正确的。

但如果点击了menu,切换ViewController1,然后再点击menu直接切换至ViewController5。

从ViewController5向右滑动往回切换的时候发现始终会直接切换至ViewController1,而不是ViewController4。

我用一个int变量来标识当前的页面,以此作为跳转的依据,但不起作用,原因是UIPageViewController调用Delegate的时候自动使用了ViewController1。

这可能是UIPageViewController的Bug,或者是一种缓存机制。

它的特点如下:

1.

self . pageViewController = [[ UIPageViewController alloc ] initWithTransitionStyle : UIPageViewControllerTransitionStyleScroll navigationOrientation :UIPageViewControllerNavigationOrientationHorizontal options : nil ];

2.使用menu来控制切换的代码如下

- ( void)scrollMenuDidSelected:( XHScrollMenu *)scrollMenu menuIndex:( NSUInteger)selectIndex {

[_ pageViewController setViewControllers :[ NSArray arrayWithObject :[self  viewControllerAtIndex :selectIndex]] direction :UIPageViewControllerNavigationDirectionForward animated : YES completion : NULL ]

}

最后修改:

- ( void)scrollMenuDidSelected:( XHScrollMenu *)scrollMenu menuIndex:( NSUInteger)selectIndex {

if (selectIndex > _pageIndex) { //前翻或者后翻的条件判断

__block XX ViewController *blocksafeSelf = self;

[ self . pageViewController setViewControllers :[ NSArray arrayWithObject :[ self viewControllerAtIndex :selectIndex]] direction :UIPageViewControllerNavigationDirectionForward animated : YES completion :^( BOOL finished) {

if (finished) {

dispatch_async( dispatch_get_main_queue(), ^{

[blocksafeSelf. pageViewController setViewControllers :[ NSArray arrayWithObject :[blocksafeSelf viewControllerAtIndex :selectIndex]] direction :UIPageViewControllerNavigationDirectionForward animated : NO completion : NULL ]; // bug fix for uipageview controller

});

}

}];

} else {

__block RCOnlineViewController *blocksafeSelf = self;

[ self . pageViewController setViewControllers :[ NSArray arrayWithObject :[ self viewControllerAtIndex :selectIndex]] direction :UIPageViewControllerNavigationDirectionReverse animated : YES completion :^( BOOL finished){

if (finished) {

dispatch_async( dispatch_get_main_queue(), ^{

[blocksafeSelf. pageViewController setViewControllers :[ NSArray arrayWithObject :[blocksafeSelf viewControllerAtIndex :selectIndex]] direction :UIPageViewControllerNavigationDirectionReverse animated : NO completion : NULL ]; // bug fix for uipageview controller

});

}

}];

}

}
时间: 2024-11-10 07:37:00

UIPageViewController跳跃切换的问题 - 静如树的相关文章

数据结构中常用树型结构简介

B树.B-树.B+树.B*树.红黑树rbtree 二叉排序树.trie树Double Array 字典查找树 B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中:否则,如果查询关键字比结点关键字小,就进入左儿子:如果比结点关键字大,就进入右儿子:如果左儿子或右儿子的指针为空,则报

算法系列笔记4(红黑树)

随机构建的二叉查找树的高度期望值为O(lgn),并不代表所有的二叉查找树的高度都为O(lgn).但是对于有些二叉查找树的变形来说,动态集合各基本操作的性能却总是很好的,如红黑树.B树.平衡二叉树(AVL树).跳跃表(确切的说不是树,或多或少有树的结构).treaps(树堆)等.这里我们讲解红黑树. 平衡的意思就是完成动态数据集的操作(minimum.maximum.search.predecessor(前驱).successor(后继).insert及delete)在O(lgn)时间内完成. 定

Android插件化(使用Small框架)

github: https://github.com/cayden/MySmall Android插件化(使用Small框架) 框架源代码 1. Create Project File->New->New Project... 1.1 Configure your new project 假设宿主包名为com.example.mysmall 设置Application name为MySmall 改动Company Domain为com.example.mysmall 这步是个技巧,在Step3

linux 基本命令常用选项(目录和文件)

命令类型: 内置命令(shell内置),内部,内建 外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件 man COMMAND: 分章节: 1:用户命令(/bin, /usr/bin, /usr/local/bin) 2:系统调用 3:库用户 4:特殊文件(设备文件) 5:文件格式(配置文件的语法) 6:游戏 7:杂项(Miscellaneous) 8: 管理命令(/sbin, /usr/sbin, /usr/local/sbin) MAN: NAME:命令名称及功能简要说明 SY

初学Cocos2dx

初学cocos2dx Cocos2dx 中的主要概念包括:应用.导演.场景.层.精灵.动画.动作. Cocos2dx里面的主要类 1.CCObject Object Object Object 是cocos2dx的主要基类.主要提供了引用计数的功能. 2.CCPoolManager CCPoolManager CCPoolManager CCPoolManager 是个单体类,负责管理多个垃圾回收器 CCAutoreleasePool 在CCObject::Autorelease方法中单体CCP

基于ReactCSSTransitionGroup实现react-router过渡动画

此前,我使用了react-router库来完成单页应用的路由,从而实现组件之间的切换能力.然而,默认页面的切换是非常生硬的,为了让页面切换更加缓和与舒适,通常的方案就是过渡动画. 这里我调研了2种实现方案,它们都能够为react-router实现路由切换时的过渡效果,第1种是react官方自带的ReactCSSTransitionGroup(官方,推荐),第2种则是react-router-transition(非官方). 下面,我会基于ReactCSSTransitionGroup来分析页面过

9、手把手教你Ext5(九)使用MVVM特性控制菜单样式

菜单的样式多了,怎么可以灵活的切换是个问题. 在使用标准菜单的时候,在菜单最前面有二个按钮,可以切换到树状菜单和按钮菜单. 在树状菜单的显示区,可以切换换到标准菜单,以及折叠式菜单. 切换到按钮菜单之后: 切换菜单切换到标准菜单和树状菜单,需要在设置里面进行操作. 下面分别来看看是如何实现的.由于内部处理比较复杂,我就画一张大图了,源代码稍后也会发布在csdn中. 现在看看设置里面改变菜单样式的那个控件的运行图.

别让手机偷走你的大半生

你天天都用智能手机,手机已经变成了你身体的一部分,成了第六感,但你能回答下面这三个问题吗: 你每天检查多少次手机? 你每天用多久手机? 你在哪些手机APP上花费时间最多? 今天,你可以带着这三个问题,来了解一下: 你是如何使用手机的 怎样改变你的手机使用习惯 改变后会发生什么 你是这么用手机的? 很久以前,你们谈恋爱花前月下,吃饭卿卿我我,现在: 亲爱的,世界上最远的距离,不是生与死,而是我坐在你面前,你却在低头玩儿手机-- 之前你和朋友们可以愉快的吃饭,聊聊哪道菜好吃,侃侃欧洲杯或者NBA,现

跟我一起学extjs5(10--使用MVVM控制菜单样式,含前10节源码)

跟我一起学extjs5(10--使用MVVM特性控制菜单样式) 菜单的样式多了,怎么可以灵活的切换是个问题. 在使用标准菜单的时候,在菜单最前面有二个按钮,可以切换到树状菜单和按钮菜单. 在树状菜单的显示区,可以切换换到标准菜单,以及折叠式菜单. 切换到按钮菜单之后: 切换菜单切换到标准菜单和树状菜单,需要在设置里面进行操作. 下面分别来看看是如何实现的.由于内部处理比较复杂,我就画一张大图了,源代码稍后也会发布在csdn中. 现在看看设置里面改变菜单样式的那个控件的运行图. 这个流程比较复杂,