1

I have implemented a UIPageViewController in which I am loading the images from the web service. Now I have a button on my pageViewController which will upload a new image to the server.

How to update my PageViewController's dataSource so that I can display new image in my page view?

Here is my code:

#pragma mark - PageViewController

    self.newpageViewController = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationVertical options:nil];
    //self.newpageViewController.delegate = self;
    self.newpageViewController.dataSource = self;

    ContentViewController *contentViewController =[self viewControllerAtIndex:0];

    NSArray *viewControllers = [NSArray arrayWithObject:contentViewController];
    [self.newpageViewController setViewControllers:viewControllers
                                     direction:UIPageViewControllerNavigationDirectionForward
                                      animated:NO
                                    completion:nil];


    _newpageViewController.view.frame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 114);

    [self addChildViewController:_newpageViewController];
    [self.view addSubview:_newpageViewController.view];
    [self.newpageViewController didMoveToParentViewController:contentViewController];

}


#pragma mark - Page View Controller Data Source

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSUInteger index = ((ContentViewController*) viewController).pageIndex;

    if ((index == 0) || (index == NSNotFound)) {
        return nil;
    }

    index--;
    return [self viewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger index = ((ContentViewController*) viewController).pageIndex;

    if (index == NSNotFound) {
        return nil;
    }

    index++;

    if (index == [self.jsonPicArray count])
    {
        return nil;
    }
    return [self viewControllerAtIndex:index];
}

- (ContentViewController *)viewControllerAtIndex:(NSUInteger)index
{
    if (([self.jsonPicArray count] == 0) || (index >= [self.jsonPicArray count])) {
        return nil;
    }

    ContentViewController *pageContentViewController =[[ContentViewController alloc]init];

    pageContentViewController.pageIndex = index;
    pageContentViewController.dataArray = jsonDataArray;
    pageContentViewController.profileImageStr = self.jsonPicArray[index];
    return pageContentViewController;
}

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
    return [self.jsonPicArray count];
}


- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
    return 0;
}
Fabio Berger
  • 1,921
  • 2
  • 24
  • 29
ios
  • 955
  • 1
  • 12
  • 35

0 Answers0