Я пытаюсь добавить UIPageViewController в свой RootViewController в коде. Я удалил файл раскадровки в соответствии с Xcode 5 without Storyboard and ARC и добавив «обычный» ViewController отлично работает. Я adoped методы согласно UIPageViewControllerDataSourceДобавить несколько пользовательских UIViewControllers в UIPageViewController
Кроме того, я попытался упростить логику (вместо реализации ModelController от исходного проекта с просмотрами страниц, я добавляю showVCWithIndex:. Способ выбрать 1 из 3 VC от vcArray и записать его на Мутабельном массив с 1 VC Надеюсь, что вы может сказать мне, если я правильно или неправильно об этом.
.m
#import "RootPageViewController.h"
#import "ViewController0.h"
#import "ViewController1.h"
#import "ViewController2.h"
@interface RootPageViewController()
@property (strong, nonatomic) ViewController0 *vController0;
@property (strong, nonatomic) ViewController1 *vController1;
@property (strong, nonatomic) ViewController2 *vController2;
@property (strong, nonatomic) UIPageViewController *pageViewController;
@property (strong, nonatomic) NSArray *vcArray;
@property (strong, nonatomic) NSMutableArray *viewController;
@end
@implementation RootPageViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageViewController.dataSource = self;
_vController0 = [[ViewController0 alloc] init];
_vController1 = [[ViewController1 alloc] init];
_vController2 = [[ViewController2 alloc] init];
NSUInteger index = 0;
NSMutableArray *viewController = [NSMutableArray arrayWithObjects:[self showVCWithIndex:index], nil];
[self.pageViewController setViewControllers:viewController
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
CGRect pageViewRect = self.view.bounds;
self.pageViewController.view.frame = pageViewRect;
[self.pageViewController didMoveToParentViewController:self];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger index = [self.vcArray indexOfObject:viewController];
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self showVCWithIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger index = [self.vcArray indexOfObject:viewController];
if (index == 2 || index == NSNotFound) {
return nil;
}
index++;
return [self showVCWithIndex:index];
}
- (UIViewController *)showVCWithIndex: (NSUInteger)index
{
self.vcArray = [NSArray arrayWithObjects: _vController0, _vController1, _vController2, nil];
UIViewController *currentVC = [self.vcArray objectAtIndex:index];
return currentVC;
}
@end
EDIT получил решение (этот код работает, но я не уверен, если я на 100% право)
Привет! Я модифицировал код и нуждаюсь в вашем опыте =) – johann
Кажется, сейчас хорошо. Работало ли оно так, как ожидалось? Создание экземпляра перед добавлением в paginationVC? Если да, подумайте, примите мой ответ :) –
Да, я их всех выставляю при запуске, а затем нажимаю 1 на pagingVC. Благодаря! – johann