不幸的是,搜索没有帮助我...我有以下问题:我有三个UItableviews(ViewController1,ViewController2和Viewcontroller3),我将它们嵌入到故事板的简单PageViewController屏幕截图中(我还不能在这里插入任何图片:/)。
为了显示三个 ViewController,我将它们放入我的 PageViewController.m(PageViewController 的自定义类)的 viewdidload 中的一个数组中,所以我没有使用 ViewController 作为容器将其他 ViewController 放入:
-(void)viewDidLoad
{
[super viewDidLoad];
self.delegate = self;
self.dataSource = self;
UIViewController *p1 = [self.storyboard
instantiateViewControllerWithIdentifier:@"TableView1"];
UIViewController *p2 = [self.storyboard
instantiateViewControllerWithIdentifier:@"TableView2"];
UIViewController *p3 = [self.storyboard
instantiateViewControllerWithIdentifier:@"TableView3"];
myViewControllers = @[p1,p2,p3];
我可以选择从哪个视图控制器开始,然后选择
- 前进(方向: UIPageViewControllerNavigation**DirectionForward**
):
[self setViewControllers:@[p1]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO completion:nil];
NSLog(@"loaded!");
}
或选择最后一个并倒退(UIPageViewControllerNavigation**DirectionReverse**
):
[self setViewControllers:@[p3]
direction:UIPageViewControllerNavigationDirectionReverse
animated:NO completion:nil];
但是,我一直在试图弄清楚如何从ViewController2
开始,并在左侧Viewcontroller1
,在右侧ViewController3
(cp。 截图)
任何建议或代码片段将不胜感激!
这是整个代码:
#import "StartScreenPageViewController.h"
@interface StartScreenPageViewController ()
@end
@implementation StartScreenPageViewController
{
NSArray *myViewControllers;
}
-(void)viewDidLoad
{
[super viewDidLoad];
self.delegate = self;
self.dataSource = self;
UIViewController *p1 = [self.storyboard
instantiateViewControllerWithIdentifier:@"1"];
UIViewController *p2 = [self.storyboard
instantiateViewControllerWithIdentifier:@"2"];
UIViewController *p3 = [self.storyboard
instantiateViewControllerWithIdentifier:@"3"];
myViewControllers = @[p1,p2,p3];
[self setViewControllers:@[p1]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO completion:nil];
NSLog(@"loaded!");
}
-(UIViewController *)viewControllerAtIndex:(NSUInteger)index
{
return myViewControllers[index];
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];
--currentIndex;
currentIndex = currentIndex % (myViewControllers.count);
return [myViewControllers objectAtIndex:currentIndex];
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];
++currentIndex;
currentIndex = currentIndex % (myViewControllers.count);
return [myViewControllers objectAtIndex:currentIndex];
}
-(NSInteger)presentationCountForPageViewController:
(UIPageViewController *)pageViewController
{
return myViewControllers.count;
}
-(NSInteger)presentationIndexForPageViewController:
(UIPageViewController *)pageViewController
{
return 0;
}
@end
您应该能够在 viewDidLoad
中设置初始视图控制器。您已经在这样做了,但您正在将其设置为第一个视图控制器:
[self setViewControllers:@[p1]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO completion:nil];
我认为您应该能够将其更改为:
[self setViewControllers:@[p2]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO completion:nil];
然后,只需确保pageViewController:viewControllerAfterViewController
和pageViewController:viewControllerBeforeViewController
方法根据所需的功能处理数据源的上下迭代。