UIPageViewController滚动自动发出
问题描述:
我已用定时器来实现的UIPageViewController
自动滚动每5秒后是这样的:UIPageViewController滚动自动发出
_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
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[_bannerTimer invalidate];
}
问题:
我的问题是当loadNextController
方法被称为我的应用程序最高回应。 如果我切换到下一页仍然在每个视图上都遇到同样的问题。
答
做到像下面的一些变化,做好后台线程所有non-ui
任务,并在主线程所有UI
操作,试试这个
- (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];
});
});
}
我希望这将帮助你..
+0
谢谢这对我有用...... :) –
应该停止计时器在loadNextController –
我m无效定时器'viewWillDisappear' –
我可以看到你的错误控制台吗? –