如何让 UIPageViewController 自动滑动无限重复?
How to make UIPageViewController slide automatically with endless repeat?
如何让我的 UIPageViewController 自动滑动图片?
我已经创建并实现了一切,现在我想让它以 10 秒的时间间隔自动滑动图像...
谁能帮我解决这个问题?
每次要更改页面时都需要调用 - setViewControllers:direction:animated:completion:
方法。
您可以使用 NSTimer
触发您自己的中间方法,使用上述方法设置相应的页面。
这是我的代码:
- (UIViewController *) pageViewController: (UIPageViewController *) pageViewController viewControllerBeforeViewController:(UIViewController *) viewController
{
HelpPageViewController *itemController = (HelpPageViewController *) viewController;
if (itemController.itemIndex > 0)
{
return [self itemControllerForIndex: itemController.itemIndex-1]; // bilo je -1
}
return nil;
}
- (UIViewController *) pageViewController: (UIPageViewController *) pageViewController viewControllerAfterViewController:(UIViewController *) viewController
{
HelpPageViewController *itemController = (HelpPageViewController *) viewController;
if (itemController.itemIndex+1 < [contentImages count]) // bilo je <
{
return [self itemControllerForIndex: itemController.itemIndex+1];
}
return nil;
}
UIPageViewController *scrollingHeader = [self.storyboard instantiateViewControllerWithIdentifier: @"ScrollingHeader"];
scrollingHeader.dataSource = self;
if([contentImages count])
{
NSArray *startingViewControllers = @[[self itemControllerForIndex: 0]];
[scrollingHeader setViewControllers: startingViewControllers
direction: UIPageViewControllerNavigationDirectionForward
animated: NO
completion: nil];
}
self.pageViewController = scrollingHeader;
[self addChildViewController: self.pageViewController];
[self.view addSubview: self.pageViewController.view];
[self.pageViewController didMoveToParentViewController: self];
在管理您的 UIPageViewController 的 class 中:
有一个属性喜欢
@property NSInteger currentIndex;
在 0 实例化它,每次更改为另一个 viewController,更新它的值 (_currentIndex++ / _currentIndex--)
然后实例化一个 NSTimer :
[NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(changeController:)
userInfo:nil
repeats:YES];
并添加这个方法
- (void) changeController:(NSTimer*)timer
{
UIViewController yourViewController = [self itemControllerForIndex: self.currentIndex+1];
self.currentIndex++;
NSArray *array = [NSArray arrayWithObjects:yourViewController]
[yourPageViewController setViewControllers:array direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}
希望对您有所帮助...
如何让我的 UIPageViewController 自动滑动图片?
我已经创建并实现了一切,现在我想让它以 10 秒的时间间隔自动滑动图像...
谁能帮我解决这个问题?
每次要更改页面时都需要调用 - setViewControllers:direction:animated:completion:
方法。
您可以使用 NSTimer
触发您自己的中间方法,使用上述方法设置相应的页面。
这是我的代码:
- (UIViewController *) pageViewController: (UIPageViewController *) pageViewController viewControllerBeforeViewController:(UIViewController *) viewController
{
HelpPageViewController *itemController = (HelpPageViewController *) viewController;
if (itemController.itemIndex > 0)
{
return [self itemControllerForIndex: itemController.itemIndex-1]; // bilo je -1
}
return nil;
}
- (UIViewController *) pageViewController: (UIPageViewController *) pageViewController viewControllerAfterViewController:(UIViewController *) viewController
{
HelpPageViewController *itemController = (HelpPageViewController *) viewController;
if (itemController.itemIndex+1 < [contentImages count]) // bilo je <
{
return [self itemControllerForIndex: itemController.itemIndex+1];
}
return nil;
}
UIPageViewController *scrollingHeader = [self.storyboard instantiateViewControllerWithIdentifier: @"ScrollingHeader"];
scrollingHeader.dataSource = self;
if([contentImages count])
{
NSArray *startingViewControllers = @[[self itemControllerForIndex: 0]];
[scrollingHeader setViewControllers: startingViewControllers
direction: UIPageViewControllerNavigationDirectionForward
animated: NO
completion: nil];
}
self.pageViewController = scrollingHeader;
[self addChildViewController: self.pageViewController];
[self.view addSubview: self.pageViewController.view];
[self.pageViewController didMoveToParentViewController: self];
在管理您的 UIPageViewController 的 class 中:
有一个属性喜欢
@property NSInteger currentIndex;
在 0 实例化它,每次更改为另一个 viewController,更新它的值 (_currentIndex++ / _currentIndex--)
然后实例化一个 NSTimer :
[NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(changeController:)
userInfo:nil
repeats:YES];
并添加这个方法
- (void) changeController:(NSTimer*)timer
{
UIViewController yourViewController = [self itemControllerForIndex: self.currentIndex+1];
self.currentIndex++;
NSArray *array = [NSArray arrayWithObjects:yourViewController]
[yourPageViewController setViewControllers:array direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}
希望对您有所帮助...