UIPageViewController 的下一页按钮 iOS 8 - objC
Next Page Button for UIPageViewController iOS 8 - objC
实际上,我正在尝试使用 PageViewController 填充画廊。我成功地在视图中引入了滚动图像,但是,我在页面视图控制器中使用了 下一个和上一个按钮 它不能正常工作我使用了这行代码。
- (IBAction)previousButtonPressed:(id)sender {
PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionReverse animated:NO completion:nil];
}
- (IBAction)nextButtonPressed:(id)sender {
PageContentViewController *startingViewController = [self viewControllerAtIndex:+1];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}
因为我在 - (IBAction)nextButtonPressed 处使用了 viewControllerAtIndex:+1: (id)sender 我让按钮操作仅在第一次单击按钮操作时起作用。
提前致谢
检查此代码:-
- (void)changePage:(UIPageViewControllerNavigationDirection)direction {
NSUInteger pageIndex = ((FooViewController *) [_pageViewController.viewControllers objectAtIndex:0]).pageIndex;
if (direction == UIPageViewControllerNavigationDirectionForward){
pageIndex++;
}else {
pageIndex--;
}
YourViewController *viewController = [self viewControllerAtIndex:pageIndex];
if (viewController == nil) {
return;
}
[_pageViewController setViewControllers:@[viewController] direction:direction animated:YES completion:nil];
}
// 上一个按钮
- (IBAction)previousButtonPressed:(id)sender {
[self changePage:UIPageViewControllerNavigationDirectionReverse];
}
// 下一个按钮
- (IBAction)nextButtonPressed:(id)sender {
[self changePage:UIPageViewControllerNavigationDirectionForward];
}
Chandan 的回答非常有效。
在 swift 3.0
中查看
func changePage(direction:UIPageViewControllerNavigationDirection)
{
var pageIndex = (pageViewController.viewControllers?[0] as! SliderContentVC).pageIndex
if(direction == UIPageViewControllerNavigationDirection.forward)
{
pageIndex = pageIndex! + 1
}
else
{
pageIndex = pageIndex! - 1
}
let viewController = self.viewControllerAtIndex(index: pageIndex!)
if(viewController == nil)
{
return;
}
else
{
self.pageViewController.setViewControllers([viewController!], direction: direction, animated: true, completion: nil)
}
}
//上次点击
@IBAction func btnGoBack_Click(_ sender: Any)
{
self.changePage(direction: .reverse)
}
//返回点击
@IBAction func btn_GoForward_Click(_ sender: Any)
{
self.changePage(direction: .forward)
}
//viewControllerAtIndex方法
func viewControllerAtIndex(index : Int) -> UIViewController?
{
if(index < 0 || index >= MAX_COUNT)
{
return nil
}
let pageContentViewController = self.storyboard?.instantiateViewController(withIdentifier: "SliderContentVC") as! SliderContentVC
pageContentViewController.pageIndex = index
return pageContentViewController
}
实际上,我正在尝试使用 PageViewController 填充画廊。我成功地在视图中引入了滚动图像,但是,我在页面视图控制器中使用了 下一个和上一个按钮 它不能正常工作我使用了这行代码。
- (IBAction)previousButtonPressed:(id)sender {
PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionReverse animated:NO completion:nil];
}
- (IBAction)nextButtonPressed:(id)sender {
PageContentViewController *startingViewController = [self viewControllerAtIndex:+1];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}
因为我在 - (IBAction)nextButtonPressed 处使用了 viewControllerAtIndex:+1: (id)sender 我让按钮操作仅在第一次单击按钮操作时起作用。 提前致谢
检查此代码:-
- (void)changePage:(UIPageViewControllerNavigationDirection)direction {
NSUInteger pageIndex = ((FooViewController *) [_pageViewController.viewControllers objectAtIndex:0]).pageIndex;
if (direction == UIPageViewControllerNavigationDirectionForward){
pageIndex++;
}else {
pageIndex--;
}
YourViewController *viewController = [self viewControllerAtIndex:pageIndex];
if (viewController == nil) {
return;
}
[_pageViewController setViewControllers:@[viewController] direction:direction animated:YES completion:nil];
}
// 上一个按钮
- (IBAction)previousButtonPressed:(id)sender {
[self changePage:UIPageViewControllerNavigationDirectionReverse];
}
// 下一个按钮
- (IBAction)nextButtonPressed:(id)sender {
[self changePage:UIPageViewControllerNavigationDirectionForward];
}
Chandan 的回答非常有效。 在 swift 3.0
中查看func changePage(direction:UIPageViewControllerNavigationDirection)
{
var pageIndex = (pageViewController.viewControllers?[0] as! SliderContentVC).pageIndex
if(direction == UIPageViewControllerNavigationDirection.forward)
{
pageIndex = pageIndex! + 1
}
else
{
pageIndex = pageIndex! - 1
}
let viewController = self.viewControllerAtIndex(index: pageIndex!)
if(viewController == nil)
{
return;
}
else
{
self.pageViewController.setViewControllers([viewController!], direction: direction, animated: true, completion: nil)
}
}
//上次点击
@IBAction func btnGoBack_Click(_ sender: Any)
{
self.changePage(direction: .reverse)
}
//返回点击
@IBAction func btn_GoForward_Click(_ sender: Any)
{
self.changePage(direction: .forward)
}
//viewControllerAtIndex方法
func viewControllerAtIndex(index : Int) -> UIViewController?
{
if(index < 0 || index >= MAX_COUNT)
{
return nil
}
let pageContentViewController = self.storyboard?.instantiateViewController(withIdentifier: "SliderContentVC") as! SliderContentVC
pageContentViewController.pageIndex = index
return pageContentViewController
}