jjzjj

ios - 页面指​​示器快速不同步

coder 2023-09-06 原文

我有以下 PageViewController 类:

class ProjectorPageViewController : UIPageViewController, UIPageViewControllerDataSource {

var randUsed : [String]?

var pageViewMatches : [SingleMatch]? {
    didSet {
       //irrelevant code

        }
        let initialcontroller = viewControlerAtIndex(0)

        let viewControllers = [initialcontroller!]
        setViewControllers(viewControllers, direction: .Forward, animated: true, completion: nil)
    }
}



override func viewDidLoad() {
    super.viewDidLoad()
    dataSource = self
    let pageControl = UIPageControl.appearance()
    pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
    pageControl.pageIndicatorTintColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 1.0)
}


func viewControlerAtIndex(index : Int) -> PageViewContentViewController? {

    if (self.pageUsers!.count == 0 || index >= self.pageUsers!.count) {
        return nil
    }

    let controller = PageViewContentViewController()
    controller.location = pageLocations![index]
    controller.image_name = pageImages![index]
    controller.user_name = pageUsers![index]
    controller.pageIndex = index
    return controller

}


func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
    let curr_index = (viewController as! PageViewContentViewController).pageIndex
    print ("attempting after with index : " + String(curr_index))

    if (curr_index! < pageViewMatches!.count - 1) {
        return viewControlerAtIndex(curr_index! + 1)        }
    else {
        return nil
    }
}

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
    let curr_index = (viewController as! PageViewContentViewController).pageIndex
    print ("attempting before with index : " + String(curr_index))
    if (curr_index! > 0 ) {
        return viewControlerAtIndex(curr_index! - 1)
    }
    else {
        return nil
    }


}



func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
    if let matches = pageViewMatches {

    return matches.count
}
    else {
        return 0
    }
}

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
    return pageViewController.viewControllers!.indexOf((pageViewController.viewControllers?.first)!)!
}



}

问题是,如果我在页面之间滑动得足够快,页面指示器就会变得不同步,并指向错误的页面。如果我以适中的速度滑动,则不会发生这种情况。我看到一篇类似的帖子说解决方案是实现 presentationIndexForPageViewController 方法,但是从 Objective-C 翻译这个(除非我在翻译中犯了错误)并没有解决问题。这是我指的帖子:UIPageViewController setViewControllers, UIPageControl not showing right current number

最佳答案

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
    let vc = pageViewController.viewControllers!.first as! PageViewContentViewController

    return vc.pageIndex
}

您必须返回 pageIndex ... pageViewController.viewControllers!.indexOf((pageViewController.viewControllers?.first)!)!不会返回正确的索引

关于ios - 页面指​​示器快速不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38042161/

有关ios - 页面指​​示器快速不同步的更多相关文章

  1. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  2. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  3. ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器? - 2

    我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r

  4. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  5. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  6. java - 为什么 ruby​​ modulo 与 java/other lang 不同? - 2

    我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.

  7. ruby-on-rails - 在 RSpec 中,如何以任意顺序期望具有不同参数的多条消息? - 2

    RSpec似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:allow(a).toreceive(:f)expect(a).toreceive(:f).with(2)a.f(1)a.f(2)a.f(3)我问的原因是a.f的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。 最佳答案 RSpecspy是测试这种情况的一种方式。要监视一个方法,用allowstub,除了方法名称之外没有任何约束,调用该方法,然后expect确切的方法调用。例如:allow(a).toreceive(:f)a.f(2)a.f(1)

  8. ruby - 在 ASP 页面上 Mechanize 中断 - 2

    require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie

  9. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

  10. ruby-on-rails - 如何用不同的用户运行nginx主进程 - 2

    A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(

随机推荐