首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPageViewController滚动自动发布

UIPageViewController滚动自动发布
EN

Stack Overflow用户
提问于 2017-06-29 09:22:08
回答 1查看 201关注 0票数 3

在每隔5秒使用这样的计时器之后,我已经实现了UIPageViewController的自动滚动:

代码语言:javascript
复制
     _bannerTimer = [NSTimer scheduledTimerWithTimeInterval:5.0
                                         target:self
                                       selector:@selector(loadNextController)
                                       userInfo:nil
                                        repeats:YES];


  - (void)loadNextController
        {

        self.index++;

        HeaderAdVC *nextViewController;
        if(self.index>arrayImages.count-1)
        {
            self.index=0;
            [pageIndicator setCurrentPage:0];
            nextViewController = [self viewControllerAtIndex:0];
        }
        else
        {
            nextViewController = [self viewControllerAtIndex:self.index];
        }


        [pageIndicator setCurrentPage:self.index];
        [pageController setViewControllers:@[nextViewController]
                                 direction:UIPageViewControllerNavigationDirectionForward
                                  animated:YES
                                completion:nil];


    }

和删除viewWillDisappear中的计时器

代码语言:javascript
复制
-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [_bannerTimer invalidate];
}

问题:

我的问题是当loadNextController方法被调用时,我的应用程序停止响应。如果我切换到下一页,每个视图都会出现相同的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-29 10:33:00

执行以下更改,在后台线程中执行所有non-ui任务,在主线程中执行所有UI操作,尝试以下操作

代码语言:javascript
复制
- (void)loadNextController
{

    dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){

        self.index++;

        HeaderAdVC *nextViewController;
        if(self.index>arrayImages.count-1)
        {
            self.index=0;
            [pageIndicator setCurrentPage:0];
            nextViewController = [self viewControllerAtIndex:0];
        }
        else
        {
            nextViewController = [self viewControllerAtIndex:self.index];
        }

        dispatch_async(dispatch_get_main_queue(), ^{
            [pageIndicator setCurrentPage:self.index];
            [pageController setViewControllers:@[nextViewController]
                                     direction:UIPageViewControllerNavigationDirectionForward
                                      animated:YES
                                    completion:nil];
        });



    });
}

希望这能帮到你..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44821129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档