Comment ajouter une nouvelle vue-contrôleur dans UIPageViewController après UIButton a été mis sur écoute?

Je me demandais comment puis-je mettre en œuvre des boutons qui aura une incidence sur la UIPageViewController du modèle. Par exemple, je voudrais que mon UIPageViewController modèle de tableau à la charge avec un seul objet dans et quand un bouton est tapé un nouveau point de vue contrôleur sera ajouté et permet de basculer automatiquement de la page ou quelque chose comme ça (comme dans l'application de Notes). De même pour la suppression de l'objet que l'utilisateur voit.

Jusqu'à présent j'ai essayé par la mise en œuvre de certains IBActions à ma racine-vue-contrôleur, mais pas de chance jusqu'à présent.

Voici comment j'ai appliquer ma ViewController classe:

@implementation ViewController
@synthesize modelArray = _modelArray;
@synthesize pageVC = _pageVC;
#pragma mark - UIPageViewControllerDataSource Methods
//Returns the view controller before the given view controller. (required)
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = [self.modelArray indexOfObject:[(ContentVC *)viewController     labelContents]];
if(currentIndex==0)
return nil;
ContentVC *cVC = [[ContentVC alloc] init];
cVC.labelContents = [self.modelArray objectAtIndex:currentIndex-1];
return cVC;
}
//Returns the view controller after the given view controller. (required)
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = [self.modelArray indexOfObject:[(ContentVC *)viewController labelContents]];
if(currentIndex==self.modelArray.count-1)
return nil;
ContentVC *cVC = [[ContentVC alloc] init];
cVC.labelContents = [self.modelArray objectAtIndex:currentIndex+1];
return cVC;
}
#pragma mark - UIPageViewControllerDelegate Methods
//Returns the spine location for the given orientation.
- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController
spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
{
if(UIInterfaceOrientationIsPortrait(orientation)){
//Set the array with only 1 view controller
UIViewController *currentVC = [self.pageVC.viewControllers objectAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObject:currentVC];
[self.pageVC setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];
//Set the doubleSided property to NO
self.pageVC.doubleSided = NO;
//Return the spine location
return UIPageViewControllerSpineLocationMin;
} else { //if landscape
NSArray *viewControllers = nil;
ContentVC *currentVC = [self.pageVC.viewControllers objectAtIndex:0];
NSUInteger currentIndex = [self.modelArray indexOfObject:[(ContentVC *)viewControllers labelContents]];
if(currentIndex==0 || currentIndex %2 == 0){
UIViewController *nextViewController = [self pageViewController:self.pageVC viewControllerAfterViewController:currentVC];
viewControllers = [NSArray arrayWithObjects:currentVC, nextViewController, nil];
} else {
UIViewController *previousVC = [self pageViewController:self.pageVC viewControllerBeforeViewController:currentVC];
viewControllers = [NSArray arrayWithObjects:previousVC, currentVC, nil];
}
//Set the view controllers as property of the UIPageViewController
[self.pageVC setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];
return UIPageViewControllerSpineLocationMid;
}
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
//Instantiate the model array
self.modelArray = [[NSMutableArray alloc] init];
[self.modelArray addObject:@"Page One"];
NSLog(@"%@", self.modelArray);
//Instantiate the UIPageViewController
self.pageVC = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
//Assign the delegate and datasource as self
self.pageVC.delegate = self;
self.pageVC.dataSource = self;
//Set the initial view controllers
ContentVC *cVC = [[ContentVC alloc] initWithNibName:@"ContentVC" bundle:nil];
cVC.labelContents = [self.modelArray objectAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObject:cVC];
[self.pageVC setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
//Add the pageViewController as the childViewController
[self addChildViewController:self.pageVC];
//Add the view of pageViewController  to the currentView
[self.view addSubview:self.pageVC.view];
//Call didMoveToParentViewController: of the childViewController, the UIPageViewController instance in our case.
[self.pageVC didMoveToParentViewController:self];
//Assign the gestureRecognizers property of the pageViewController to the view's gestureRecognizers property
self.view.gestureRecognizers = self.pageVC.gestureRecognizers;
}

Merci beaucoup!

OriginalL'auteur user1644365 | 2012-11-04