如何在两个 UIViewcontroller 之间跳转
Posted
技术标签:
【中文标题】如何在两个 UIViewcontroller 之间跳转【英文标题】:How to jump between two UIViewcontrollers 【发布时间】:2015-08-01 13:32:51 【问题描述】:我想在两个UIViewcontrollers
之间跳转
通过滑动操作。
目前我实现了一个UIScrollView
,并在上面添加了UIViewcontrollers
(vc1 and vc2),所以
在 vc1 上
向左滑动:跳转到vc2
向右滑动:什么都不做
在 vc2 上
向左滑动:什么都不做
向右滑动:跳转到vc1
但我想要的是:
在 vc1 上
向左滑动:跳转到vc2
向右滑动:跳转到vc2
在 vc2 上
向左滑动:跳转到vc1
向右滑动:跳转到vc1
那么,如何实现呢?
【问题讨论】:
【参考方案1】:试试这个
步骤:
-
在你的视图控制器中创建一个
UIPageViewController
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
-
在
UIPageViewController
上添加两个视图控制器
NSArray *viewControllers = //add your two view controllers in array;
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
-
设置数据源并添加
UIPageViewController
作为子视图控制器
self.pageController.dataSource = self;
[self addChildViewController:self.pageController];
现在,你需要实现两个方法
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
NSUInteger index = [(ViewController *)viewController index];
if (index == 0)
return nil;
// Decrease the index by 1 to return
index--;
return viewControllers[index];//[self viewControllerAtIndex:index];//viewControllerAtIndex
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
NSUInteger index = [(ViewController *)viewController index];
if (index == 1)
return nil;
index++;
return viewControllers[index];
【讨论】:
您的代码中有一些错误,但很高兴知道我应该在这里使用 UIPageViewController。以上是关于如何在两个 UIViewcontroller 之间跳转的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式在两个 UIViewController 之间切换
UIScrollview 中的两个 UIviewControllers - 如何在它们之间调用方法